Retrofit2に問題があります。Retrofit2 - レスポンスボディヌル(成功要求時)
成功した場合でも、私のwebserviceに電話をかけると、私の応答の本文はnullになります。
Firefox用のRESTClientで同じ呼び出しを行いましたが、本文に正しい答えが含まれていました。あなたが見ることができるように
D/Call request: Request{method=POST, url=http://myNeo4jServer.com, tag=null}
D/Call request header: Authorization: Basic xxxxxx
Accept: application/json; charset=UTF-8
D/Response raw header: Server: nginx
Date: Tue, 17 May 2016 10:55:13 GMT
Content-Type: application/json
Content-Length: 21549
Connection: keep-alive
Access-Control-Allow-Origin: *
OkHttp-Sent-Millis: 1463482513167
OkHttp-Received-Millis: 1463482513354
D/Response raw: [email protected]
D/Response code: 200
D/Response body: null
:
は、これは私のスタックトレースです
のContent-Length:21549(私は考えることもカウント体の文字)
レスポンスコード:200
レスポンスボディ:null
私が間違って何をしているのですか?
編集
マイインタフェース:
public interface PhonebookContactAPI {
@Headers({
"Authorization: Basic xxxxxx",
"Accept: application/json; charset=UTF-8",
"Content-Type: application/json"
})
@POST("/db/data/transaction/commit")
Call<ResponseBody> get(@Body RequestBody body);
}
マイリクエスト:
String json = "{\"statements\": [{\"statement\": \"MATCH (n) RETURN n\"}]}";
Retrofit client = new Retrofit.Builder()
.baseUrl(Globals.BASE_CLIENT_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
PhonebookContactAPI service = client.create(PhonebookContactAPI.class);
RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), json);
Call<ResponseBody> call = service.get(body);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Log.d("Call request", call.request().toString());
Log.d("Call request header", call.request().headers().toString());
Log.d("Response raw header", response.headers().toString());
Log.d("Response raw", String.valueOf(response.raw().body()));
Log.d("Response code", String.valueOf(response.code()));
if(response.isSuccessful()) {
Log.d("Response body", new Gson().toJson(response.body()));
}
else {
Log.d("Response errorBody", String.valueOf(response.errorBody()));
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.d("onFailure", t.toString());
}
});
また、私たちにあなたが呼び出しを行っているコードを表示する方が役に立つかもしれません。 – ishmaelMakitla
@ishmaelMakitla私に答えてくれてありがとう。私はちょうど質問を更新しました: –
'Log.d(" Response body "、new Gson()。toJson(response.body()));' "、response.body()。toString());'あなたが期待どおりに体を取得するかどうかを見てみましょう。 NullPointerExceptionが発生した場合は、応答が実際にnullであることを示す可能性があります。 – ishmaelMakitla