Android HttpUrlConnection传递标题参数

时间:2014-10-15 14:13:10

标签: java android http header httpurlconnection

我搜索了其他主题并且有一些答案,但我没有成功解决我的问题。 我有这个代码,我想在我的http标题中添加“Referer”。 使用setRequestProperty方法后,我在Logcat中记录结果,但我没有在输出中看到referer。我做错了什么?

URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestProperty("Referer", "http://www.example.com");
for(int i=0;con.getHeaderFieldKey(i)!=null;i++){
    String headerName = con.getHeaderFieldKey(i);
    String headerValue = con.getHeaderField(i);
    Log.d("Header", headerName + ": " + headerValue);
}

我还有另一个代码无效:

URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
String IRNIC = cookies.get("IRNIC");
String ROUTEID = cookies.get("ROUTEID");
String myCookies = "IRNIC="+IRNIC+"; ROUTEID="+ROUTEID;
con.setRequestProperty("Cookie", myCookies);
for(int i=0;con.getHeaderFieldKey(i)!=null;i++){
    String headerName = con.getHeaderFieldKey(i);
    String headerValue = con.getHeaderField(i);
    Log.d("Header", headerName + ": " + headerValue);
}

对于第一个代码,我没有看到输出中的referer以及第二个代码,我也看不到cookie。 所以似乎setRequestProperty不起作用! 提前谢谢。

编辑:我可以看到输出中的标题,但不是我通过setRequestProperty方法添加的标题。所以if代码正常工作。

1 个答案:

答案 0 :(得分:0)

来自docs:

<强> getHeaderFields

  

返回响应 - 标题字段和值的不可修改的地图

<强>调用setRequestProperty

  

设置指定的请求标头字段的值。

请求与响应不同。这就是你的标题不同的原因。该请求将使用setRequestProperty

具有正确的标头