我正在编写一个Android应用程序,它与我们公司的iPad应用程序完全相同。但我在android上开发时有1个问题。该应用程序从Web服务器下载文件。它将调用以下URL:
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内部服务器错误doc而不是所需的PDF文件。我在这里错过了什么? (对不起,我刚开始为Android开发,所以在这种情况下我不是专家; - ))
提前致谢!
答案 0 :(得分:1)
您的服务器响应状态代码出现问题意味着这与Android内容无关,只与您发送的请求有关。我注意到,虽然这可能是由于故意遗漏,但您正在执行POST请求而不添加任何POST参数。这应该是GET吗?我注意到端点是查询字符串中带有GET参数的ASPX路径。也许您的服务器设置为仅响应GET而不是POST。这是如何在iOS代码中完成的? GET和POST之间没有区别,还是通过您正在使用的库从您那里抽象出来?
答案 1 :(得分:0)
好吧现在有效...愚蠢的事情......我不断创建一个新的HttpClient,因此会话没有存储在连接中。这就是服务器返回500内部服务器错误的原因,因为服务器不知道用户......
感谢大家的帮助!