HTTP文件下载500内部服务器错误

时间:2012-05-31 14:03:21

标签: android eclipse

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

https://www.somedomain.com/API/Download.aspx?param1=test&param2=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内部服务器错误doc而不是所需的PDF文件。我在这里错过了什么? (对不起,我刚开始为Android开发,所以在这种情况下我不是专家; - ))

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

好吧现在有效...愚蠢的事情......我不断创建一个新的HttpClient,因此会话没有存储在连接中。这就是服务器返回500内部服务器错误的原因,因为服务器不知道用户......

感谢大家的帮助!