我从一个Web服务获取数据,该服务在响应主体内部以二进制格式发送文件。我想获得二进制数据。
我不会在这里写整个日志,因为它太长了而且没有用,但我会写出前几行:
PDF的第一行是:%PDF-1.4
,其余的是二进制字符,如下所示:��Yi3y�H�w��L�A���mCvÆ��.��K��7����Z0�VP
。所以它是响应体内的PDF文件。
这是我的代码:
@Streaming
@Headers({"Content-Type: application/json", "Accept: application/json"})
@POST("/auto/report/download")
Call<String> sendStatementDownloadRequest(@Body DepositStatementsDownloadRequest request);
这就是我所说的:
webservice.sendStatementDownloadRequest(request).enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.isSuccessful()) {
Log.i("VVV", "onResponse: " + new Gson().toJson(response));
} else {
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
}
});
问题是它只得到第一行:%PDF-1.4
并跳过其余的二进制数据。
无论如何都要有整个身体?
答案 0 :(得分:1)
呼叫ResponseBody
对象而不是String
你的电话应该是这样的
@Streaming
@Headers({"Content-Type: application/json", "Accept: application/json"})
@POST("/auto/report/download")
Call<ResponseBody> sendStatementDownloadRequest(@Body DepositStatementsDownloadRequest request);