我正在使用来自http://loopj.com/android-async-http/的 AsyncHttpClient 库,并让它调用 Web 服务来检索 JSON 响应。我现在正在尝试调用通过 HTTP 将文件流回客户端的 Web 服务。因此,我使用 BinaryHttpResponseHandler 来捕获返回的 byte[] 数据。但是,每次我尝试调用该方法时它都会失败,并且在检查 Throwable 对象时,异常是 'org.apache.http.client.HttpResponseException: Content-Type not allowed!'。
我已经尝试根据文档指定要允许的内容类型列表,但这并没有什么不同。我主要是流式传输 PDF,但理想情况下我不想指定内容类型列表,我希望能够下载任何文件类型。我正在使用的代码如下:
AsyncHttpClient httpClient = new AsyncHttpClient();
String[] allowedContentTypes = new String[] { "application/pdf", "image/png", "image/jpeg" };
httpClient.get(myWebServiceURL, new BinaryHttpResponseHandler(allowedContentTypes) {
@Override
public void onSuccess(byte[] binaryData) {
// ....
}
@Override
public void onFailure(Throwable error, byte[] binaryData) {
// ....
Log.e("Download-onFailure", error.getMessage());
}
});
我也试过不指定任何内容类型,只是使用:
new BinaryHttpResponseHandler()
但这没有任何区别。