1

私は、会社の iPad アプリとまったく同じように機能する Android アプリを作成しています。しかし、Androidでの開発中に1つの問題があります。アプリは Web サーバーからファイルをダウンロードします。次のような URL を呼び出します。

https://www.somedomain.com/API/Download.aspx?param1=test¶m2=test2など...

iPad では、これは完全に機能しています (これには ASIHTTPRequest クラスを使用します)。しかし、Androidでは問題しかありません。

Android でファイルをダウンロードしようとするとすぐに、PDF ファイルではなく、500 内部サーバー エラー HTML ドキュメントを含むファイルがダウンロードされます。

URL を確認しましたが、iPad とまったく同じように見えます。

私が想像できる唯一のことは、ユーザーがダウンロードするファイルが「その場で」作成されるということです。そのため、ファイルの生成に時間がかかり (10 秒または 20 秒)、その後ファイルがダウンロードされます。

アンドロイドでは、私はこれを行います:

私は拡張するクラスを持っています:

extends AsyncTask<String, Integer, JSONObject>

メソッドでは、これを行います:

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);

InputStream data = response.getEntity().getContent();       
File file = new File(context.getDir("docs", Context.MODE_PRIVATE), FileName);

OutputStream output = new FileOutputStream(file);
ByteStreams.copy(data, output);
Closeables.closeQuietly(output);

しかし、これにより、目的の PDF ファイルではなく、500 内部サーバー エラー ドキュメントが表示されます。ここで何が欠けていますか?(申し訳ありませんが、私は Android 向けの開発を始めたばかりなので、この場合の専門家ではありません ;-))

前もって感謝します!

4

2 に答える 2

1

サーバーからの応答ステータス コードが問題であるという事実は、これが Android のものとは何の関係もなく、送信している要求とのみ関係があることを意味します。これは意図的な省略が原因である可能性がありますが、POST パラメータを追加せずに POST リクエストを実行していることに気付きました。これはGETである必要がありますか?エンドポイントは、クエリ文字列に GET パラメータを含む ASPX パスであることに気付きました。サーバーが POST ではなく GET にのみ応答するように設定されている可能性があります。これはiOSコードでどのように行われていますか? GET と POST の間に違いはありませんか、それとも使用しているライブラリを介して抽象化されていますか?

于 2012-05-31T14:07:58.070 に答える