将标头添加到(HTTP 请求)文件下载
Posted
技术标签:
【中文标题】将标头添加到(HTTP 请求)文件下载【英文标题】:Add header to (HTTP request for) file download 【发布时间】:2014-10-06 08:46:46 【问题描述】:从一个示例开始,我使用以下代码下载文件:
url = new URL(stUrl);
connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty ("Foo", "Bar");
connection.setDoOutput(true); // update as per comment!
connection.connect();
// download the file
is = new BufferedInputStream(
url.openStream(),
8192
);
os = new BufferedOutputStream( new FileOutputStream( tmp ) );
copyStream( is, os );
这适用于下载。但是在 http 请求中包含 Foo/Bar
header 失败。
为什么?
更新:
下载网址=“http://x0data.com/android/default/rqst” 我想传递标头(不是 GET 或 POST 参数) 我知道服务器没问题,因为这曾经可以工作(对于我似乎丢失的 Android 代码...)【问题讨论】:
网址里有什么?它看起来怎么样? 我已经添加了网址。但请注意,如果文件工作正常,则下载。问题是没有包含标题。 服务器没有收到header?所以一切都取决于服务器,因为您没有指定该配置 zip。那么什么样的服务器代码/脚本在响应“请求”? 您要传递标头还是参数? 这不是你想要的吗:***.com/questions/15551676/… 【参考方案1】:好的,在 @greenapps 的帮助下。以下似乎在下载文件时包含标题:
url = new URL(stUrl);
connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty ("Foo", "Bar");
connection.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.flush();
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
现在,我只需要弄清楚如何将BufferedReader
写入File
...
(以及测试和验证...)
【讨论】:
以上是关于将标头添加到(HTTP 请求)文件下载的主要内容,如果未能解决你的问题,请参考以下文章