2016-06-16 9 views
1

WLResourceRequestのonsuccessコールバックでエラーが発生しました。エラーは次のとおりです。WLResourceRequest onSuccessがエラーをスローする

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あなたがWLResourceRequest(ベストプラクティス)を使用しているので、これは予想される動作である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

送信をサポートしています。

+0

WLHTTPResponseListenerを使用している場合、WLHTTPResponseListenerにHTTPResponseがあり、httpResponse.getStatusline()。getStatusCode()が機能していないため、どのようにステータスコードを取得するのですか? – Bender

+0

ドキュメントからは、生のhttp応答のみが返されます。あなたはそれを解析する必要があります。 '成功した応答は、2xxの範囲のステータスを含むサーバーから受け取った応答です。注:WLResponseListener.onSuccess(com.worklight.wlclient.api.WLResponse)メソッドとは異なり、このメソッドには生のHTTP応答が与えられます。 MobileFirst Platformは、この応答の内容を読んだり処理したりすることはありません。 – DoraC

関連する問題