httpsurlconnection 未在 addRequestProperty 上设置 headers
httpsurlconnection not setting headers on addRequestProperty
我一直陷入困境 - 当 运行 一个 httpsurlconnection 调用时,我试图设置一系列 headers 但是在调试时它显示 headers我已添加为 NULL。
代码:
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(proxy);
//HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
//add reuqest header
con.setRequestMethod("POST");
con.addRequestProperty("Accept-Language", "en-GB");
con.addRequestProperty("X-ApiKey", "xxxx-xxx-xxx-xxx-xxx");
con.addRequestProperty("Content-Type", "application/json");
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("Password", "xxxxxxxxxxxxxx"));
postParameters.add(new BasicNameValuePair("Email", "xxxxx.xxxxx@xxxxxxx.xxxx"));
OutputStream os = con.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os));
writer.write(getQuery(postParameters));
writer.flush();
writer.close();
os.close();
为了测试它们是否设置正确,我添加了
con.getHeaderField("X-ApiKey");
con.getHeaderFields();
以确定我的 Header 字段是否已正确设置。然而,他们似乎没有。
相应回复:
Post Headers: null
Post Headers: {Content-Length=[11339], Connection=[keep-alive], X-Frame-Options= [SAMEORIGIN], X-Request-Identifier=[xxxxxxxxxxxxxxxxxx], Date=[Wed, 05 Oct 2016 16:56:49 GMT], Content-Type=[text/html], null=[HTTP/1.1 400 Bad Request], Cache-Control=[private]}
上面的代码我哪里出错了,没有正确设置 headers。
您应该使用 con.getRequestProperty("X-ApiKey")
和 con.getRequestProperties()
方法 getHeaderField("")
returns 来自 响应 header header 字段的值。很乱,所以叫 getResponseHeaderField("name")
比较好
输出不为空,因为在 openConnection(URL)
被调用后,您的连接已经得到服务器的响应。
我一直陷入困境 - 当 运行 一个 httpsurlconnection 调用时,我试图设置一系列 headers 但是在调试时它显示 headers我已添加为 NULL。
代码:
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(proxy);
//HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
//add reuqest header
con.setRequestMethod("POST");
con.addRequestProperty("Accept-Language", "en-GB");
con.addRequestProperty("X-ApiKey", "xxxx-xxx-xxx-xxx-xxx");
con.addRequestProperty("Content-Type", "application/json");
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("Password", "xxxxxxxxxxxxxx"));
postParameters.add(new BasicNameValuePair("Email", "xxxxx.xxxxx@xxxxxxx.xxxx"));
OutputStream os = con.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os));
writer.write(getQuery(postParameters));
writer.flush();
writer.close();
os.close();
为了测试它们是否设置正确,我添加了
con.getHeaderField("X-ApiKey");
con.getHeaderFields();
以确定我的 Header 字段是否已正确设置。然而,他们似乎没有。
相应回复:
Post Headers: null
Post Headers: {Content-Length=[11339], Connection=[keep-alive], X-Frame-Options= [SAMEORIGIN], X-Request-Identifier=[xxxxxxxxxxxxxxxxxx], Date=[Wed, 05 Oct 2016 16:56:49 GMT], Content-Type=[text/html], null=[HTTP/1.1 400 Bad Request], Cache-Control=[private]}
上面的代码我哪里出错了,没有正确设置 headers。
您应该使用 con.getRequestProperty("X-ApiKey")
和 con.getRequestProperties()
方法 getHeaderField("")
returns 来自 响应 header header 字段的值。很乱,所以叫 getResponseHeaderField("name")
输出不为空,因为在 openConnection(URL)
被调用后,您的连接已经得到服务器的响应。