2015-10-10 10 views
7
私は、Webサービスを呼び出すために retrofitを使用していますし、改造が障害を投げている

、「Throwable`からのメッセージは私にレトロフィット2.0 ONFAILURE - 生のレスポンス

java.lang.IllegalStateExceptionを与えている。期待しますBEGIN_OBJECTは1行目の1列目の列STRINGでした$

これは、.Net WebサービスがエラーをスローしてJSONを返さないためです。しかし、これを証明するためには、onFailureで生の応答を見ることができる必要があります。とにかく私はこれを行うことができますか?

これは、私はあなたがokhttp-logging-interceptorに存在するログインターセプターを使用することができます

public void userLoginRequestEvent(final AuthenticateUserEvent event) { 

Call call = sApi.login(event.getUsername(), event.getPassword(), OS_TYPE, DeviceInfoUtils.getDeviceName()); 
call.enqueue(new Callback<LoggedInUser>() { 
    @Override 
    public void onResponse(Response<LoggedInUser> response, Retrofit retrofit) { 
    // response.isSuccess() is true if the response code is 2xx 

    if (response.isSuccess()) { 
     LoggedInUser user = response.body(); 

     AppBus.getInstance() 
       .post(new UserIsAuthenticatedEvent(user, event.getUsername(), 
         event.getPassword())); 
    } else { 
     int statusCode = response.code(); 

     // handle request errors yourself 
    } 
    } 

    @Override 
    public void onFailure(Throwable t) { 
    // handle execution failures like no internet connectivity 
    Log.d("ERROR", t.getMessage()); 
    } 


}); 
+1

http://stackoverflow.com/questions/32514410/logging-with-retrofit-2のアプローチを使用してリクエスト/レスポンスを記録してみてください。 – keno

+0

完全なスタックトレースリストと、APIインターフェースのリストを提供してください。 'onFailure(Throwable t)'メソッドで 't.printStackTrace()'を追加することで完全なスタックトレースを出力できます。 この質問の年齢を確認できませんでした。まだ解決されていませんか? :) –

+0

@КлаусШварц最初のコメントで解決されましたが、受け入れることができる投稿はありませんでした – Flexicoder

答えて

1

サーバーの回答は単なる文字列であり、オブジェクトではありません。受け取った応答を確認するにはInterceptorを使用してください。

compile 'com.squareup.okhttp3:logging-interceptor:3.4.0' 

incerceptor依存性を追加して、カスタムOkHttpクライアントに追加します。

OKHttp client = .... 
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
client.interceptors().add(interceptor); 

Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl("url") 
     .client(client) // add custom OkHttp client 

あなたはBASICHEADERSBODYを確認することができます。あなたのケースでは、BODYを確認して、送信した本文と応答本体として送信しているサーバーを確認します。

関連する問題