有什么方法可以获取原始响应的HTTP标头?
该getHeaderField()
方法对我不起作用,因为服务器吐出了多个“ Set-Cookie”,其中一些丢失了。
该
getHeaderField()
方法对我不起作用
您是在的情况下问这个的java.net.URLConnection
吗?不可以,无法使用原始HTTP响应标头URLconnection
。您需要退回到低级的Socket编程。这是一个SSCCE,只需复制“
粘贴 ”即可运行它。
package com.stackoverflow.q2307291;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class Test {
public static void main(String[] args) throws IOException {
String hostname = "stackoverflow.com";
int port = 80;
Socket socket = null;
PrintWriter writer = null;
BufferedReader reader = null;
try {
socket = new Socket(hostname, port);
writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.println("GET / HTTP/1.1");
writer.println("Host: " + hostname);
writer.println("Accept: */*");
writer.println("User-Agent: Java"); // Be honest.
writer.println(""); // Important, else the server will expect that there's more into the request.
writer.flush();
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
for (String line; (line = reader.readLine()) != null;) {
if (line.isEmpty()) break; // Stop when headers are completed. We're not interested in all the HTML.
System.out.println(line);
}
} finally {
if (reader != null) try { reader.close(); } catch (IOException logOrIgnore) {}
if (writer != null) { writer.close(); }
if (socket != null) try { socket.close(); } catch (IOException logOrIgnore) {}
}
}
}
为了避免每个尝试此代码片段的人都使SO过载,输出如下所示:
HTTP / 1.1 200 OK
缓存控制:私有
内容类型:text / html; 字符集= utf-8
过期:2010年2月21日,星期日,格林尼治标准时间
伺服器:Microsoft-IIS / 7.5
日期:2010年2月21日,星期日,格林尼治标准时间
连接方式:关闭
内容长度:208969
要了解有关以低级方式发送HTTP请求的更多信息,请阅读HTTP规范。
但是,您可能想使用getHeaderFields()
method来检索具有多个值的标头。该getHeaderField()
即只返回最后一个值,按照链接的API文档。
List<String> cookies = connection.getHeaderFields().get("Set-Cookie");
问题内容: 如何从WebView获得HTTP标头响应?我找到了半解决方案,但是它是用Objective- C编写的,不能将其转换为Swift(我已经尝试过使用较差的Obj-C知识了)。 Objective-C代码: 该代码将如何看待Swift? 也许现在我们有更好的方法呢?并不总是启用缓存。 问题答案: 迅速 斯威夫特更严格; 您想保护自己免受指针和: 检查实际是否有 检查实际是否有 对响应进行类
问题内容: 好的,因此我可以使用访问HTTP ajax响应标头 但似乎没有日期,尽管它在那里: 而代码只显示了这一点: 这是ajax调用: 有没有办法可以在响应头中获取日期? 问题答案: 这有帮助:
您只能使用HTTP HEAD请求报头,如中的选项。 冗长的HTML响应体在命令行中很难得到,所以我希望只得到标题作为POST请求的反馈。但是,头和岗是两种不同的方法。 如何使curl只显示POST请求的响应头?
问题内容: 我有一个原始HTTP字符串,我想代表一个对象中的字段。有什么方法可以解析HTTP字符串中的各个标头? 问题答案: 更新: 现在是2019年,所以在程序员尝试使用该代码的混乱评论之后,我为Python 3重写了此答案。原始的Python 2代码现在位于答案的底部。 标准库中有出色的工具,可以解析RFC 821标头,也可以解析整个HTTP请求。这是一个示例请求字符串(请注意,即使为了方便阅
问题内容: 我想知道是否可以在Cloud Endpoint中收集原始HTTP数据。我似乎在Google的文档中找不到任何内容,但是App Engine的Twitter告诉我它是(https://twitter.com/app_engine/status/305747445017624576)。如果是这样,我可以使用它的语法吗?我知道GCE的API仍处于初期阶段,我们将不胜感激。 问题答案: 将Ht