http://loopj.com/android-async-http/のAsyncHttpClientライブラリを使用しており、JSON応答を取得するためにWebサービスを正常に呼び出しています。HTTP経由でファイルをクライアントにストリーミングするWebサービスを呼び出そうとしています。したがって、私はBinaryHttpResponseHandlerを使用して、返されたbyte[]データをキャプチャしています。ただし、メソッドを呼び出そうとするたびに失敗し、Throwableオブジェクトを調べると、例外は'org.apache.http.client.HttpResponseException:Content-Typeは許可されません!'。
ドキュメントに従って許可するコンテンツタイプのリストを指定しようとしましたが、これで違いはありません。私は主に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()
しかし、これは何の違いもありませんでした。