1

我正在编写一个与我们公司的 iPad 应用程序完全相同的 Android 应用程序。但是我在 android 上开发时遇到了 1 个问题。该应用程序从网络服务器下载文件。它将调用如下 URL:

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

在 iPad 上这是完美的(我为此使用了 ASIHTTPRequest 类)。但在 Android 上,它给我的只是问题。

一旦我想用 android 下载文件,它就会下载一个带有 500 内部服务器错误 HTML 文档的文件,而不是 PDF 文件。

我检查了 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);

但这给了我一个 500 内部服务器错误文档,而不是所需的 PDF 文件。我在这里想念什么?(抱歉,我刚开始为 Android 开发,所以我不是这种情况下的专家 ;-))

提前致谢!

4

2 回答 2

1

您来自服务器的响应状态代码是问题的事实意味着这应该与 Android 的东西无关,而只与您发送的请求有关。我注意到,尽管这可能是由于故意遗漏,您正在执行 POST 请求而没有添加任何 POST 参数。这应该是 GET 吗?我注意到端点是一个 ASPX 路径,查询字符串中有 GET 参数。也许您的服务器设置为仅响应 GET 而不是 POST。这是如何在 iOS 代码中完成的?GET 和 POST 之间没有区别,还是通过您使用的库从您那里抽象出来的?

于 2012-05-31T14:07:58.070 回答
0

好的,现在可以工作了...愚蠢的事情...我不断创建一个新的 HttpClient ,因此会话不会存储在连接之间。这就是服务器返回 500 内部服务器错误的原因,因为服务器不知道用户......

不过感谢大家的帮助!

于 2012-06-01T07:04:11.133 回答