我有一些问题,几乎没有关于id会话令牌和Java Web服务的互联网文档。我们有一个服务器(Tomcat在JAX-WS + SOAP上提供Web服务),它提供了一个查询SQL服务器的API。
我必须编写一个简单的Java客户端,它通过此Web服务与服务器通信。问题是,在能够使用其任何服务器WSDL方法之前,客户端必须通过发送用户/传递的Web服务器方法进行身份验证,并且服务器向客户端返回会话ID(alfanumeric字符串)。
其余的方法没有任何类型的参数,我可以传递会话ID,所以我想它必须用作" context"。我找到了有关如何在JAX-WS中维护session-id的信息:
https://weblogs.java.net/blog/ramapulavarthi/archive/2006/06/maintaining_ses.html
Hello port = new HelloService().getHelloPort();
((BindingProvider)port).getRequestContext().put(BindingProvider.
SESSION_MAINTAIN_PROPERTY,true);
在我的情况下,如果我想收到cookie session-id,我必须:
org.tempuri.RUWebService service = new org.tempuri.RUWebService();
org.tempuri.RUWebServiceSoap myport = new org.tempuri.RUWebServiceSoap();
String session-id = myport.Auth(user,pass);
其中session-id是一个UUID变量是一个十六进制变量的字符串:8-4-4-4-8 ..我可以改为真正的十六进制,如:
java.util.UUID uuidFromHyphens = java.util.UUID.fromString("6f34f25e-0b0d-4426-8ece-a8b3f27f4b63");
我尝试了下面的代码,我改变了#34; port"变量为" myport",尝试匹配两个示例:
((BindingProvider)myport).getRequestContext().put(BindingProvider.
SESSION_MAINTAIN_PROPERTY,true);
它编译,但是当我通过它的一些方法咨询Web服务器时,我收到一个" null",就像我没有进行auth程序一样。 我认为我的问题是我不知道我在使用Cookie session-id auth程序时遇到了什么问题。
如果有人可以帮助我,我将不胜感激。
问候。
答案 0 :(得分:1)
使用GET或POST方法将其作为Request Parameter
传递
(或)
将会话ID放在传出的HTTP标头中,例如
GET / HTTP/1.0
Accept: text/plain
Accept: text/html
Session-Id:DFF55566_SOMEID
但是为了使这两个工作正常,您的Web服务器必须在服务器级别(或)您的应用程序级别以某种格式从客户端获得Session Id
。