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) 被调用后,您的连接已经得到服务器的响应。