如何在 Java 中的 GET 方法的 HttpRequest 中添加标头
Posted
技术标签:
【中文标题】如何在 Java 中的 GET 方法的 HttpRequest 中添加标头【英文标题】:How to add header to HttpRequest of GET method in Java 【发布时间】:2015-05-19 20:19:18 【问题描述】:我必须传递一个令牌作为验证每个 GET 请求以访问 RESTful Web 服务的一部分。下面是我用来访问 REST api 的代码:
public static String httpGet(String urlStr, String[] paramName, String[] paramVal) throws Exception
URL url = new URL(urlStr);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStream out = conn.getOutputStream();
Writer writer = new OutputStreamWriter(out, "UTF-8");
for (int i = 0; i < paramName.length; i++)
writer.write(paramName[i]);
writer.write("=");
writer.write(URLEncoder.encode(paramVal[i], "UTF-8"));
writer.write("&");
writer.close();
out.close();
if (conn.getResponseCode() != 200)
System.out.println("Response code: "+conn.getResponseCode());
throw new IOException(conn.getResponseMessage());
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null)
sb.append(line);
rd.close();
conn.disconnect();
return sb.toString();
我看不到任何这样的方法来设置为 HttpsURLConnection 提供的 Header conn.setHeader()
。它应该类似于 X-Cookie: token=token; 请帮我找到设置标头的方法。
【问题讨论】:
【参考方案1】:你可以使用:
conn.addRequestProperty("X-Cookie", "token=token");
或setRequestProperty()
也可以
【讨论】:
【参考方案2】:当您执行以下操作时,您已经在代码中为您的请求设置了标头:
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
即如果您正在与之通信的服务要求您在“X-Cookie”标头中发送您的令牌,您可以简单地对该标头执行相同的操作:
conn.setRequestProperty("X-Cookie", "token=token");
【讨论】:
以上是关于如何在 Java 中的 GET 方法的 HttpRequest 中添加标头的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Java 中的 RESTFul 服务向 Ipstack API 请求 GET