Java 500尝试将图像上载到服务器时的内部服务器
我正在开发一个允许用户将图像上传到服务器的应用程序。我收到500个内部服务器错误。我似乎找不到任何与此错误相关的解决我问题的方法。我的代码如下:Java 500尝试将图像上载到服务器时的内部服务器,java,android,Java,Android,我正在开发一个允许用户将图像上传到服务器的应用程序。我收到500个内部服务器错误。我似乎找不到任何与此错误相关的解决我问题的方法。我的代码如下: class RetreiveFeedTask extends AsyncTask<String, Void, String> { protected String doInBackground(String... url){ try { ByteArrayOutputStream bos =
class RetreiveFeedTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... url){
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
bitmap.compress(CompressFormat.JPEG, 50, bos);
byte[] data = bos.toByteArray();
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost("http://10.155.103.167:9090/RestServer/rest/todos");
String fileName = String.format("File_%d.jpg", new Date().getTime());
ByteArrayBody bab = new ByteArrayBody(data, fileName);
ContentBody mimePart = bab;
// File file= new File("/mnt/sdcard/forest.png");
// FileBody bin = new FileBody(file);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("file", bab);
postRequest.setEntity(reqEntity);
postRequest.setHeader("Content-Type", "application/json");
int timeoutConnection = 60000;
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 60000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpConnectionParams.setTcpNoDelay(httpParameters, true);
HttpResponse response = httpClient.execute(postRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
System.out.println("Response: " + response.getStatusLine());
while ((sResponse = reader.readLine()) != null) {
s = s.append(sResponse);
}
txt.setText("NEW TEXT"+s);
} catch (Exception e) {
// handle exception here
e.printStackTrace();
System.out.println(e.toString());
}
return null;
}
}
类RetreiveFeedTask扩展了AsyncTask{
受保护的字符串doInBackground(字符串…url){
试一试{
ByteArrayOutputStream bos=新建ByteArrayOutputStream();
BitmapDrawable drawable=(BitmapDrawable)imageView.getDrawable();
位图Bitmap=drawable.getBitmap();
压缩(CompressFormat.JPEG,50,bos);
字节[]数据=bos.toByteArray();
HttpClient HttpClient=新的DefaultHttpClient();
HttpPostRequest=新的HttpPost(“http://10.155.103.167:9090/RestServer/rest/todos");
String fileName=String.format(“File_%d.jpg”,new Date().getTime());
ByteArrayBody bab=新的ByteArrayBody(数据,文件名);
ContentBody mimePart=bab;
//File File=新文件(“/mnt/sdcard/forest.png”);
//FileBody bin=新的FileBody(文件);
MultipartEntity reqEntity=新的MultipartEntity(HttpMultipartMode.BROWSER_兼容);
REQUENTITY.addPart(“文件”,bab);
postRequest.setEntity(reqEntity);
setHeader(“内容类型”、“应用程序/json”);
int timeoutConnection=60000;
HttpParams httpParameters=新的BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,timeoutConnection);
int timeoutSocket=60000;
HttpConnectionParams.setSoTimeout(httpParameters,timeoutSocket);
HttpConnectionParams.setTcpNoDelay(httpParameters,true);
HttpResponse response=httpClient.execute(postRequest);
BufferedReader reader=新的BufferedReader(新的InputStreamReader(
response.getEntity().getContent(),“UTF-8”);
字符串响应;
StringBuilder s=新的StringBuilder();
System.out.println(“响应:+Response.getStatusLine());
而((sResponse=reader.readLine())!=null){
s=s.append(sResponse);
}
txt.setText(“新文本”+s);
}捕获(例外e){
//在这里处理异常
e、 printStackTrace();
System.out.println(例如toString());
}
返回null;
}
}
使用此代码上载图像对我来说很好
public class UploadToServer extends AsyncTask<String, String, String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... args){
String status="";
String URL = "";
try{
Log.d("Image Path ======",TakePicture.file.toString());
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL);
File file = new File(TakePicture.file.toString());
FileBody bin = new FileBody(file);
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("Content-Disposition", new StringBody("form-data"));
reqEntity.addPart("name", new StringBody("Test"));
reqEntity.addPart("filename", bin);
reqEntity.addPart("Content-Type", new StringBody("image/jpg"));
httppost.setEntity(reqEntity);
Log.d("Executing Request ", httppost.getRequestLine().toString());
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
Log.d("Response content length: ",resEntity.getContentLength()+"");
if(resEntity.getContentLength()>0) {
status= EntityUtils.toString(resEntity);
} else {
status= "No Response from Server";
Log.d("Status----->",status);
}
} else {
status = "No Response from Server";
Log.d("Status----->",status);
}
} catch (Exception e) {
e.printStackTrace();
status = "Unable to connect with server";
}
return status;
}
@Override
protected void onPostExecute(String status) {
super.onPostExecute(status);
}
}
公共类UploadToServer扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…args){
字符串状态=”;
字符串URL=“”;
试一试{
Log.d(“图像路径===”,TakePicture.file.toString());
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(URL);
File File=新文件(TakePicture.File.toString());
FileBody bin=新的FileBody(文件);
MultipartEntity reqEntity=新的MultipartEntity();
reqEntity.addPart(“内容处置”,新的StringBody(“表单数据”);
要求实体添加部件(“名称”,新的StringBody(“测试”);
reqEntity.addPart(“文件名”,bin);
reqEntity.addPart(“内容类型”,新的StringBody(“图像/jpg”);
httppost.setEntity(reqEntity);
Log.d(“正在执行请求”,httppost.getRequestLine().toString());
HttpResponse response=httpclient.execute(httppost);
HttpEntity当前性=response.getEntity();
if(最近性!=null){
Log.d(“响应内容长度:”,resEntity.getContentLength()+);
if(resEntity.getContentLength()>0){
status=EntityUtils.toString(最近性);
}否则{
status=“服务器无响应”;
Log.d(“状态------>”,状态);
}
}否则{
status=“服务器无响应”;
Log.d(“状态------>”,状态);
}
}捕获(例外e){
e、 printStackTrace();
status=“无法连接到服务器”;
}
返回状态;
}
@凌驾
受保护的void onPostExecute(字符串状态){
super.onPostExecute(状态);
}
}
所有HTTP 5xx代码都明确表示服务器端存在问题;您没有收到4xx错误,如400错误请求
或413请求实体太大
,表明您的客户端代码出错。服务器上出现问题(例如配置错误的上载目录或数据库连接失败),您需要检查服务器日志以查看出现了哪些错误消息