Retforit 无法解码响应



当我向服务器发送请求时,此响应返回:

{"data":{"id":19,"slug":"u0645u0646-u0647u0631-u0639u0644u0645-u0627u0632-u0641u0642u0637-u0641u06cc-5","category_id":3,"title":"u0645u0646 u0647u0631 u0639u0644u0645 u0627u0632 u0641u0642u0637 u0641u06cc","needtype":1,"price":366,"city":"u0634u0627u0647u0631u0648u062f","description":"u0633u06ccu062f u0642u0648 u0627u0648","connection":1,"answer_time":null,"immidiatetype":0,"university":"u062fu0627u0646u0634u06afu0627u0647 u0635u0646u0639u062au06cc u0634u0627u0647u0631u0648u062f","image1":null,"image2":null,"counter":1,"phone":"09055064918","telegram":"qqqqqu","fake_id":"kHJbalwj2Z","created_at":"u06f1u06f3u06f9u06f8-u06f0u06f6-u06f1u06f9 u06f1u06f9:u06f2u06f4","destination":"u0645u0646u062a","gender":"1","car_type":"u0641u0631u06ccu062f u0628u06ccu0633u062a u0639u062fu062f","car_brand":"u0647u06ccu0641u0627 u0628u06ccu0637u0631u0641u06cc","number":"2","date_hour":"u0645u062f u062au0627 u0627u0632 u0644u0698 u0628u06cc","date_day":"988","like":false}}

但真正的输出是:

{
"data": {
"id": 19, 
"category_id": 3, 
"needtype": 1,
"price": 366, 
"connection": 1,
"answer_time": null,
"immidiatetype": 0, 
"image1": null,
"image2": null,
"counter": 1,
"phone": "09055064918",
"telegram": "qqqqqu",
"fake_id": "kHJbalwj2Z", 
"gender": "1", 
"number": "2", 
"date_day": "988",
"like": false
}
}

应用程序接口:

@POST("/api/teezer/{cat}/{slug}")
Call<ResponseBody> getSpecificTraining(@Path("cat") int Category, @Path("slug") String slug);

我的服务:

public static <S> S createService(
Class<S> serviceClass, final String authToken) throws KeyManagementException, NoSuchAlgorithmException {
AuthenticationInterceptor interceptor = null;
if (!TextUtils.isEmpty(authToken)) {
interceptor = new AuthenticationInterceptor(authToken);
if (!httpClient.interceptors().contains(interceptor)) {
httpClient.addInterceptor(interceptor);
builder.client(httpClient.build());
retrofit = builder.addConverterFactory(ScalarsConverterFactory.create()).build();
}
}
return createServiceHttps(serviceClass, interceptor, null);
}

最后我的请求正文:

Call<ResponseBody> calls = loginService.getSpecificTraining(Integer.parseInt(cat), slug);
Log.e(">> Url: ", calls.request().url() + " ");
int finalImage = image;
calls.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Log.e(">> onResponse:", String.valueOf(response.code()));
if (response.isSuccessful()) {
assert response.body() != null;
Log.e(">> Response message: ", response.message() + " ");
try {
String data = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});

程序似乎无法解码响应。 解决方案是什么?

响应是正确的,只是字符被转义了。

试试这个解决方案。

最新更新