webservice设置的http请求头丢失

zhangshuo555 2014-09-11 11:37:03
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条信息,请问这是什么原因导致的?
...全文
647 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
attilax 2014-09-12
  • 打赏
  • 举报
回复
身份验证, 设置请求头的方法 不是太好,因为这个不通用。。。。可以考虑放在参数里,比较好。。 不然出问题了不好解决。。
zhangshuo555 2014-09-11
  • 打赏
  • 举报
回复
引用 2 楼 huxiweng 的回复:
这个跟协议关系比较紧密了,比较下少了哪两个
Soapaction [""] Name [test] 这两个没有了
teemai 2014-09-11
  • 打赏
  • 举报
回复
这个跟协议关系比较紧密了,比较下少了哪两个
zhangshuo555 2014-09-11
  • 打赏
  • 举报
回复
这么久都没人来么,召唤大神们
zhangshuo555 2014-09-11
  • 打赏
  • 举报
回复
引用 5 楼 chouy 的回复:
肯定是人的问题,不是机器问题。
能不能具体说说
商科程序员 2014-09-11
  • 打赏
  • 举报
回复
肯定是人的问题,不是机器问题。
zhangshuo555 2014-09-11
  • 打赏
  • 举报
回复
还有没有人来看啊

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧