2013-07-31 2 views
0

Я работаю над приложением, которое позволяет пользователю загружать изображение на сервер. Я получаю 500 ошибок внутреннего сервера. Я не могу найти что-либо, связанное с этой ошибкой, которая решила бы мою проблему. Мой код выглядит следующим образом:500 Внутренний сервер при попытке загрузить изображение на сервер

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; 
    } 
} 

ответ

0

Используйте этот код для загрузки изображения Это работает хорошо для меня

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); 
    } 
} 
+0

у вас пробовал этот код – Developer

0

Все HTTP 5xx коды указывают на проблему на стороне сервера конкретно; вы не получаете ошибку 4xx, например 400 Bad Request или 413 Request Entity Too Large, что указывает на то, что ваш код клиента делает что-то неправильно. Что-то на сервере идет не так (например, неправильно сконфигурированный каталог загрузки или неудачное подключение к базе данных), и вам нужно проверить журналы своего сервера, чтобы узнать, какие сообщения об ошибках появляются.

Смежные вопросы