2016-06-16 3 views
1

WLResourceRequest의 onsuccess 콜백에 오류가 발생하며 오류는 다음과 같습니다.WLResourceRequest onSuccess가 오류를 throw합니다.

com.sun.jdi.InternalException : Unexpected JDWP Error: 14 Cannot evaluate com.worklight.wlclient.api.WLResponse.toString()

왜이 오류가 발생합니까? 이것을 건너 뛸 수있는 방법이 있습니까? 내가 사용

코드는 내가 대신 WLResponseListener의 WLHttpResponseListener를 사용할 때 응답을 얻을 잘 작동

입니다.

wlResponse.getResponseText(); 빈 응답을 준다.

WLResourceRequest request = new WLResourceRequest("Actual server path here", GET); 
     request.addHeader(new BasicHeader("IfAnyHeader", "here")); 
    request.send(new ResponseListener()); 
private class ResponseListener implements WLResponseListener { 

     @Override 
     public void onSuccess(WLResponse wlResponse) { 

      responseCode = wlResponse.getStatus(); 
      final String result = wlResponse.getResponseText(); 
     } 

     @Override 
     public void onFailure(WLFailResponse wlFailResponse) { 

      responseCode = wlFailResponse.getStatus(); 
      final String result = wlFailResponse.getResponseText(); 
} 

내가는 onSuccess 방법에 오류가 ... wlResponse.getResponseText(); 항상 비어 있습니다.

+0

구현 한 코드를 제공하는 것부터 시작하지 않겠습니까? –

+0

질문을 편집하십시오 ... – Bender

+0

부정적인 피드를 줄 수있는 경우 솔루션을 제공 할 수 있어야합니다. – Bender

답변

1

마지막으로이 문제에 대한 해결책을 찾았습니다.

 request.send(new WLHttpResponseListener() { 
        @Override 
        public void onSuccess(HttpResponse httpResponse) { 
         BufferedReader reader = null; 
         try { 

    //      responseCode = httpResponse.getStatusLine(); 
          WLResponse wlResponse=new WLResponse(httpResponse); 

          int responseCode=wlResponse.getStatus(); 


          reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8")); 
// used a function to convert reader to string 
          final String result = entityToString(reader); 

         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 

        @Override 
        public void onFailure(HttpResponse httpResponse, Exception e) { 
         BufferedReader reader = null; 
         try { 



          responseCode = new WLFailResponse(new WLResponse(httpResponse)).getStatus(); 

          reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8")); 
          String result = entityToString(reader); 

         } catch (IOException eec) { 
          e.printStackTrace(); 
         } 

        } 
       }); 
2

WLResponseListener는 WLClient.invokeProcedure를 지원합니다.

http://www.ibm.com/support/knowledgecenter/en/SSHS8R_7.1.0/com.ibm.worklight.apiref.doc/html/refjava-worklight-j2me/html/com/worklight/wlclient/api/WLResponseListener.html

WLHTTPResponseListener 전송을 지원 WLResourceRequests http://www.ibm.com/support/knowledgecenter/en/SSHS8R_7.1.0/com.ibm.worklight.apiref.doc/html/refjava-worklight-android-native/html/com/worklight/wlclient/api/WLHttpResponseListener.html

당신이 WLResourceRequest (권장)를 사용하고 있기 때문에, 이것은 예상 된 동작입니다.

+0

WLHTTPResponseListener를 사용하고 있다면 상태 코드를 어떻게 얻을 수 있습니까? WLHTTPResponseListener에는 HTTPResponse가 있고 httpResponse.getStatusline(). getStatusCode()는 작동하지 않기 때문에 어떻게해야합니까? – Bender

+0

설명서에서 원시 http 응답 만 반환됩니다. 당신은 그것을 파싱해야 할 것입니다. 성공적인 응답은 2xx 범위의 상태를 포함하는 서버로부터받은 응답입니다. 참고 : WLResponseListener.onSuccess (com.worklight.wlclient.api.WLResponse) 메서드와 달리이 메서드에는 원시 HTTP 응답이 제공됩니다. MobileFirst 플랫폼은 어떤 식 으로든이 응답의 내용을 읽거나 처리하지 않습니다. – DoraC