我正在編寫一個Android應用程序,它與我們公司的iPad應用程序完全相同。但我有一個問題,而在Android上開發。該應用程序從網絡服務器下載文件。它將調用像一個網址:HTTP文件下載500內部服務器錯誤
https://www.somedomain.com/API/Download.aspx?param1=test¶m2=test2等等
在iPad上,這是可以正常使用(我用的是ASIHTTPRequest類此)。但在Android上它只給我一些問題。
只要我想用android下載文件,就會下載一個帶有500內部服務器錯誤HTML文檔而不是PDF文件的文件。
我檢查了網址,它們看起來和iPad上的完全一樣。
我能想象的唯一事情就是用戶下載的文件是「即時」創建的。所以需要一些時間(10或20秒)來生成文件,然後文件被下載。
在Android上我這樣做:
我有延伸的一類:
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);
但是,這是給我一個500內部服務器錯誤文檔而不是所需的PDF文件。我在這裏錯過了什麼? (對不起,我剛剛開始爲Android開發,所以我不是這方面的專家;-))
在此先感謝!
對我很愚蠢,把它改成HTTPGet,但沒有區別... – CyberK
你需要發送什麼類型的頭文件?例如Accept頭就會有所作爲。服務器是否返回302重定向到文件?我懷疑這是HttpGet與ASIHTTPRequest的默認請求參數的區別。另外,你的代碼是否適用於其他URI? –
我不需要發送特定的標題。在iPad上,我只是簡單地調用這個URL,沒有什麼更少的......我嘗試了一個簡單的JPG圖像的代碼,這個代碼可以工作,但是再次,那麼這個文件就會在URL被調用時出現,並且我調用的API會生成在飛行的文件... – CyberK