【发布时间】:2017-07-04 06:52:13
【问题描述】:
在实际提出问题之前,我已经交叉检查了很多参考资料。作为大多数人,我正在调用 Web 服务并获得上述结果。我的问题比较具体,所以在问之前让我添加我的code snippet
public static WebService getRestService(String newApiBaseUrl, String accessToken)
{
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
if (BuildConfig.DEBUG) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
httpClient.addInterceptor(logging);
}
Gson gson = new GsonBuilder()
.setLenient()
.create();
restBuilder = new Retrofit.Builder()
.baseUrl(newApiBaseUrl)
.client(httpClient.build())
.addConverterFactory(GsonConverterFactory.create(gson));
if (accessToken != null) {
AuthenticationInterceptor interceptor =
new AuthenticationInterceptor(accessToken);
if (!httpClient.interceptors().contains(interceptor)) {
httpClient.addInterceptor(interceptor);
restBuilder.client(httpClient.build());
}
}
retrofit = restBuilder.build();
return retrofit.create(WebService.class);
}
请忽略解释器。这是我的服务生成器类,通过它调用所有 Web 服务。我正在调用一个 POST 方法,它将返回一个简单的响应。
我可以在“Android Monitor”中看到我的正确响应。但是当它通过 JsonConverterFactory 时,它给了我上面的错误。我确定的一件事是 Web 服务正在返回一个简单的文本响应,因为没有任何特定的内容可以返回到应用程序。有没有办法可以将我的文本响应转换为类。如果我错过了什么,请免费回喊。
同时添加我的接口方法
@Headers({
Constants.ApiHeader.CONTENT_TYPE_JSON
})
@POST("POST_URL/{number}")
Call<MyResponseModel> getActualProductLocation(@Header("access_token") String accessToken, @Path("number") String number, @Body List<MyRequestModel> body);
更新 我设法从服务器获取了部分代码 sn-p。这就是他们的反应:
Response.status(200).entity("Response Success").build()
【问题讨论】:
-
发布
MyResponseModel。很可能它的格式不正确。 -
它是空的,因为服务器没有返回键值对(JSON数据)。我必须在类中定义任何字符串变量吗?
-
我的问题比较具体怎么回事?这些问题都是一样的:json数据不是转换器所期望的。 gson 转换器可能找不到一个单独的字符串有效的 json(虽然它是)
-
@Android,服务器返回空字符串。
-
它返回给我一些“响应成功”
标签: android converter retrofit2 gson