Java 改装2.0b2:如何从响应中获取InputStream?
我正在使用改装版2.0b2。收到响应后,我尝试通过以下方式从响应中获取InputStream:Java 改装2.0b2:如何从响应中获取InputStream?,java,android,retrofit,okhttp,Java,Android,Retrofit,Okhttp,我正在使用改装版2.0b2。收到响应后,我尝试通过以下方式从响应中获取InputStream: Response<JsonNode> response = call.execute(); InputStream is = response.raw().body().byteStream(); 尽管响应返回正确。我在这里做错了什么?如果您想要原始流,请告诉改造返回一个OkHttp响应库 import okhttp3.ResponseBody; import retrofit2.Res
Response<JsonNode> response = call.execute();
InputStream is = response.raw().body().byteStream();
尽管响应返回正确。我在这里做错了什么?如果您想要原始流,请告诉改造返回一个OkHttp
响应库
import okhttp3.ResponseBody;
import retrofit2.Response;
Response<ResponseBody> response = call.execute();
try ( ResponseBody responseBody = response.body() ) {
InputStream is = responseBody.byteStream();
// ...
}
导入okhttp3.responsebook;
2.回应;;
Response=call.execute();
try(ResponseBody ResponseBody=response.body()){
InputStream is=responseBody.ByTestStream();
// ...
}
记住也要更新你的界面
。因此上面的代码使用了try-with-resources语句。很明显,问题在于您得到的响应类型是
JsonNode
,而不是没有自动转换的响应(因为自动转换从流中读取,字节流中没有任何内容)。尝试响应
?尝试过,没有。无论是“JsonNode”还是“Void”或“Object”,仍然失败。谢谢@iagreen,您的答案绝对正确。我很难找到正确的方法将ResponseBody
转换为原始json来继续我的工作。谢谢=)
import okhttp3.ResponseBody;
import retrofit2.Response;
Response<ResponseBody> response = call.execute();
try ( ResponseBody responseBody = response.body() ) {
InputStream is = responseBody.byteStream();
// ...
}