0 0

webservice设置的http请求头丢失 10

webservice采用的是jax-ws,现在要进行身份验证,我用的是设置请求头的方法,本地客户端设置请求头代码如下:
ZscpWebServiceImplService ser = new ZscpWebServiceImplService();
ZscpWebServiceImplDelegate de = ser.getZscpWebServiceImplPort();
Map<String, Object> context = ((BindingProvider)de).getRequestContext();
Map<String, List<String>> headers = new HashMap<String, List<String>>();
context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:8080/traceWS/ZscpWebServiceImplPort?wsdl");
 headers.put("name", Collections.singletonList("test"));
 headers.put("checkuser", Collections.singletonList("test!test123"));
 context.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
System.out.println(de.queryExposure(10, 1,"4"));

本地服务端获取请求头代码如下:
MessageContext mc = context.getMessageContext();
Map requestHeaderNames = (Map)mc.get(SOAPMessageContext.HTTP_REQUEST_HEADERS);
Set set = requestHeaderNames.keySet();
for(Object key:set){
    System.out.println(key+"   "+requestHeaderNames.get(key));
}

现在我在本地运行的结果是9条信息,全部都有
Host   [localhost:8080]
Content-type   [text/xml;charset="utf-8"]
Content-length   [240]
Connection   [keep-alive]
Name   [test]
Checkuser   [test!test123]
User-agent   [JAX-WS RI 2.1.3-hudson-390-]
Accept   [text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2]
Soapaction   [""]
但是服务端在相同代码的情况下,客户端测试代码中的wsdl地址改成服务器的地址,如果为域名访问的,那么就只打印7条信息,把域名改成局域网IP地址访问,可以正常打印出9条信息,请问这是什么原因导致的?
2014年9月11日 11:44

1个答案 按时间排序 按投票排序

0 0

是这样的,这个问题已经有人写过博客了,推荐楼主读一下
http://jackyrong.iteye.com/blog/1885481

2014年9月11日 14:32

相关推荐

Global site tag (gtag.js) - Google Analytics