2011-03-09 10 views
1

JSON 메시지를 통해 서버와 통신하는 응용 프로그램을 개발하고 있습니다.JSON 요청을 실행할 때 내부 오류가 발생했습니다.

일부 메시지는 결과를 제대로 보내고 받았습니다. 하지만 내 루틴 중 하나가 오류를 던져서 그것이 내 문제인지 또는 서버인지 확실하지 않습니다.

오류 :

"A ResponseHandler에 문자열로 응답 본문을 반환 : 나는 BasicResponseHandler의 문서를 읽을

private String post(String json) { 
     int TIMEOUT_MILLISEC = 10000; // = 10 seconds 
     HttpParams httpParams = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC); 
     HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC); 
     HttpClient client = new DefaultHttpClient(httpParams); 

     HttpPost request = new HttpPost(
       "https://my server url"); 
     try { 
      StringEntity entity = new StringEntity(json); 
      entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, 
        "application/json")); 
      request.setEntity(entity); 

      ResponseHandler<String> handler = new BasicResponseHandler(); 
      return client.execute(request, handler); 
     } catch (Throwable e) { 
      e.printStackTrace(); 
      return ""; 
     } 
    } 

:

org.apache.http.client.HttpResponseException: Internal Server Error 
    at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:71) 
    at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616) 
    at br.com.iba.dao.DLS.post(DLS.java:121) 
    at br.com.iba.dao.DLS.fulfill(DLS.java:151) 
    at br.com.iba.LibraryActivity$3.doAction(LibraryActivity.java:123) 
    at br.com.iba.LibraryActivity$SwitchListener.setSelected(LibraryActivity.java:208) 
    at br.com.iba.LibraryActivity$SwitchListener.access$0(LibraryActivity.java:204) 
    at br.com.iba.LibraryActivity$ButtonGroup.onClick(LibraryActivity.java:230) 
    at android.view.View.performClick(View.java:2408) 
    at android.view.View$PerformClick.run(View.java:8816) 
    at android.os.Handler.handleCallback(Handler.java:587) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.app.ActivityThread.main(ActivityThread.java:4627) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:521) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    at dalvik.system.NativeStart.main(Native Method) 

게시 할 내 코드는 다음입니다 성공한 (2xx) 응답의 경우 응답 코드가 300 이상인 경우 응답 본문이 사용되며 HttpResponseException이 발생합니다. HttpClient # execute (org.apache.http.client.methods.HttpUriRequest, ResponseHandler), HttpClient는 내부적으로 리디렉션 (3xx 응답)을 처리 할 수 ​​있습니다. "

그래서 지금은 서버 측 오류라고 생각합니다. 정확한 오류가 무엇인지 알아야합니다.

감사합니다.

+1

문제가 서버에 있든 클라이언트에 있든 "내부 서버 오류"에 단서가있을 수 있습니다 :-) 일반적인 HTTP 500 텍스트입니다. –

답변

5

서버가 500 내부 서버 오류 응답 상태를 반환합니다. 문제는 귀하의 서버에 있습니다.

+0

흠 ... StackTrace는이 시점에서 좀 더 구체적이어야합니다. 감사합니다. 내가 서버 측에서 해결할 때 나는 올바르게 표시 할 것이다. –

+0

동일한 JSON 패키지를 서버에 테스트하면 제대로 작동합니다. 이 오류는 아마도 내 편이 아닐 수 없습니다. "org.apache.http.impl.client.BasicResponseHandler.handleResponse (BasicResponseHandler.java:71)" –

+0

"응답 코드가 300 이상이면 응답 본문이 사용되고 HttpResponseException이 발생합니다." 감사합니다 –

관련 문제