良い一日。
SOに初めて投稿するのは初めてで、これまではそうする必要はありませんでした。読書は常に十分でした。今、私は Android 用の AsyncHttpClient ライブラリを使用してひどく行き詰まっています。ファイルのダウンロード以外のすべての応答で、少なくとも私にとっては、行き詰まった最後の 1 日半の間、素晴らしく機能します。:-)
コード:
@Override
public void onClick(DialogInterface dialog, int which) {
int userId = ((App)getActivity().getApplicationContext()).getUserId();
String url = ZenApi.getAbsoluteUrl("api/attachments/" + userId + "/" +
attachments[which]);
selectedFile = attachments[which].toString();
String[] allowedContentTypes = new String[] {"application/octet-stream",
"text/html; charset=ISO-8859-1", "image/png", "image/jpeg",
"image/bmp", "application/pdf", "text/html; charset=UTF-8", "image/png;charset=UTF-8" };
BinaryHttpResponseHandler handler = new BinaryHttpResponseHandler(allowedContentTypes) {
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
};
@Override
public void onFinish() {
ChooseMessageAttachmentFragment.this.dismiss();
super.onFinish();
}
@Override
public void onProgress(int bytesWritten, int totalSize) {
// TODO Auto-generated method stub
super.onProgress(bytesWritten, totalSize);
}
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] binaryData, Throwable error) {
Toast.makeText(getActivity(), "Failed to load file: " + error.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess(int statusCode, byte[] binaryData) {
File file = new File(getActivity().getFilesDir(), selectedFile);
if (file.exists()) {
try {
FileOutputStream stream = new FileOutputStream(file.getPath());
stream.write(binaryData[0]);
stream.close();
MimeTypeMap mimemap = MimeTypeMap.getSingleton();
String ext = MimeTypeMap.getFileExtensionFromUrl(file.getName());
String type = mimemap.getMimeTypeFromExtension(ext);
if (type == null ) {
type = "*/*";
}
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), type);
startActivity(intent);
} catch (java.io.IOException e) {
Toast.makeText(getActivity(), "Error downloading file", Toast.LENGTH_SHORT).show();
}
}
}
};
ZenApi.post(url, null, handler);
}
使用されている URL は正しく形成されており (確認済み)、このライブラリを使用する他のすべての呼び出し (JSON、ログイン POST) はすべて正常に動作します。
このエラーに関連して、この特定のライブラリで考えられる、またはGoogle検索またはSOヒットを読んだことがあるすべてを調査して試しましたが、呼び出しに含めるほぼすべてのMimeTypeを試しましたが、同じエラー. 私は本当にこれを機能させたいと思っているので、すべてのコードをリファクタリングして組み込みの httpclients を使用する必要はありません。これが私の次のステップだと思います。私もこの図書館が大好きです。
シンプルなpngファイルをダウンロードしようとしています。
イメージを提供するバックエンド API 呼び出しは機能しており、さまざまなクライアント (ブラウザー、Titanium アプリなど) で 1 年間使用されています。
接続はSSL経由です
バックエンドへの他のすべての呼び出し (ファイルのダウンロードを含まない) は、このライブラリで正しく機能します。
どんな助けでも大歓迎です。ありがとう!