将标头添加到(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/Barheader 失败。

为什么?


更新

下载网址=“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 请求)文件下载的主要内容,如果未能解决你的问题,请参考以下文章

Guzzle HTTP - 将授权标头直接添加到请求中

如何将授权标头添加到 Angular http 请求?

如何将承载令牌添加到 HTTP 请求的标头?

如何将 JSON 字符串添加到 HTTP 请求标头?

是否可以将请求标头添加到 iframe src 请求?

将单个 HTTP 标头的多个值添加到请求或响应的标准