现在我正在做一个Android SDK项目,代码太旧了,我尝试使用okhttp3从服务器收集数据。通过使用下面的函数,我能够从服务器收集响应。
String json = requestGetString(url);
public String requestGetString(String uri) throws IOException {
Response res = null;
try {
res = getStringHttp(host+uri);
System.out.println(res.body().string());
return res.body().string();
}catch (NullPointerException e) {
//body = null ??
throw new IOException(e);
} catch (IOException e) {
throw new IOException(e);
}finally {
if(res != null){
try{
res.close();
}catch (NullPointerException e){
//body = null ??
throw new IOException(e);
}
}
}
}
我正在接收Json,但无法使用数据类解析它。
如下所示
AuthAppResponse result = parseJson(path, json, AuthAppResponse.class);
你可以看看我的解析器函数
private <TResponse> TResponse parseJson(String path, String json, Class<TResponse> responseClass) throws IOException
{
return parseJson(getGson(), path, json, responseClass);
}
而这,
private <TResponse> TResponse parseJson(Gson gson, String path, String json, Class<TResponse> responseClass) throws IOException
{
try
{
return gson.fromJson(json, responseClass);
}
catch (JsonSyntaxException e)
{
throw new IOException("The response from '" + path + "' failed to be parsed as JSON.\ncontent = " + json, e);
}
}
什么也没发生。
和相同的SDK与最新的代码库,它的工作与相同的代码很好。任何人都有一个想法,以找出可能的解决方案,这一点。请分享您的评论。
2条答案
按热度按时间h4cxqtbf1#
okhttp响应主体只能使用一次。您将使用它两次。首先在:
然后在
oo7oh9g92#
最后,我发现我的代码中缺少的部分,我错过了在旧项目中添加一个proguard文件,这就是为什么Gson不解析响应