【问题标题】:Some Response headers not showing一些响应标头未显示
【发布时间】:2022-09-23 02:39:29
【问题描述】:
这些是我尝试获取标头时得到的响应标头
但是当我尝试通过我的代码获取所有标题时,它不会显示位置标题。
这是我的代码
try {
URL obj = new URL(\"https://app.armorcode.com/oauth2/authorization/okta-apptesting?email=manan.girdhar@armorcode.io\");
URLConnection conn = obj.openConnection();
Map<String, List<String>> map = conn.getHeaderFields();
System.out.println(\"Printing Response Header...\\n\");
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
System.out.println(\"Key : \" + entry.getKey()
+ \" ,Value : \" + entry.getValue());
}
} catch (IOException e) {
e.printStackTrace();
}
有人可以告诉我为什么缺少位置标题
标签:
java
response-headers
【解决方案1】:
首先尝试使用(例如)以下代码获取您从URLConnection 获得的内容:
String content = IOUtils.toString(conn.getInputStream(), StandardCharsets.UTF_8);
我认为您会在屏幕上获得第三次 GET 的内容(状态为 200)。
您必须防止 HTTP 连接中的自动重定向。
尝试这个:
public static void main(String[] args) throws Exception {
final URL obj = new URL("https://app.armorcode.com/oauth2/authorization/okta-apptesting?email=manan.girdhar@armorcode.io");
final URLConnection conn = obj.openConnection();
// prevent automatic redirects
final HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setInstanceFollowRedirects(false);
conn.connect();
// content your for debug
String content = IOUtils.toString(conn.getInputStream(), StandardCharsets.UTF_8);
final Map<String, List<String>> map = conn.getHeaderFields();
System.out.println("Printing Response Header...\n");
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
System.out.println("Key : " + entry.getKey()
+ " ,Value : " + entry.getValue());
}
}