获取请求的自定义标头(Java HTTP)

时间:2015-10-09 07:50:05

标签: java http-headers apache-httpclient-4.x

我正在尝试通过Java实现网页的get请求(使用Apache HTTP API)。

网页在get请求中发送自定义标头值,我无法在java代码中模拟。

当我打开一个网页时,它会发送一个请求标题“AO-7DEABF”,其中包含一些自动生成的值(登录会话的值是一致的),除非我通过我的java发送相同的值,否则网页不会响应代码。

如何从我的java代码中获取网页的实际值,以便我可以将其与我的请求一起发送。

我正在使用的示例代码

GET /rest/zephyr/latest/zql/executeSearch/?zqlQuery=&offset=20&maxRecords=0&expand=executionStatus&_=1444386966596 HTTP/1.1
Host: jira.devops.mnscorp.net
Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
AO-7DEABF: Vwl8V0kdk7Xvyq9BFivbLpbSdpZ2tFjy182i1qYBju0o0KyWAPh9chbJvt9GRGvvf98RK8u1GHaclCm8FBEhbA==
Content-Type: application/json
Referer: https://<myclientjira>/secure/enav/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: wb48617274=C9B5D1A8; seraph.rememberme.cookie=24122%3A41d5dae1cd459348abecfb0ca5feee6766fd0ac0; JSESSIONID=1428066D5584823DFD572189A2456540; atlassian.xsrf.token=BSMP-3NDP-M3AB-8R70|98ba98938704a930babccb4a5912c01b762d9220|lin; wb48617274=90986387

请求标题

MinimumScaleFactor

2 个答案:

答案 0 :(得分:0)

您可以在响应中获取标题详细信息,如下所示。

//get all headers       
Header[] headers = response.getAllHeaders();
for (Header header : headers) {
    System.out.println("Key : " + header.getName() + " ,Value : " + header.getValue());
}

//get header by 'key'
String server = response.getFirstHeader("xxxx").getValue();

答案 1 :(得分:0)

我猜你做的是发送一些与Zephyr相关的东西。是的,使用'通常'的Zehpyr API(不是ZAPI)需要每次发送“AO-7DEABF”的值。

您可以在登录后通过GET打开Jira的主页来获取标题值。页面代码将包含一个块,如:

var zEncKeyFld = \"AO-7DEABF\";\r\n\t\t
var zEncKeyVal = \"QNZa3bygsZ4Jfu+Xw91TcNnRV2yJUj5/Wiu1+l5vowsg/WCjy11kuUACnS/OFIvWuR3NITQFhO46LxZubp/EWw==\";\r\n

然后是您解析它的步骤。我不知道如何产生这种和平的规则,这是我发现的一种解决方法。

相关问题