我遇到了一些问题,并且互联网上几乎没有关于 id session token 和 Java Web 服务的文档。我们有一个服务器(Tomcat 在 JAX-WS + SOAP 上提供 Web 服务),它提供 API 来查询 SQL 服务器。
我必须编写一个简单的 Java 客户端,通过此 Web 服务与服务器进行通信。问题是,在能够使用任何服务器 WSDL 方法之前,客户端必须通过发送用户/密码的 Web 服务器方法进行身份验证,然后服务器向客户端返回一个 session ID(字母数字字符串)。
其余的方法没有任何可以传递 session ID 的参数,所以我想它必须用作“上下文”。我找到了有关如何在 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");
我尝试了以下代码,将“port”变量更改为“myport”,尝试匹配这两个示例:
((BindingProvider)myport).getRequestContext().put(BindingProvider.
SESSION_MAINTAIN_PROPERTY,true);
它可以编译,但是当我通过某些方法查询网络服务器时,我收到一个“null”,就像我没有进行身份验证过程一样。 我认为我的问题是我不知道我在 cookie session-id 身份验证过程中做错了什么。
如果有人能帮助我,我将不胜感激。
问候。
最佳答案
使用 GET 或 POST 方法将其作为请求参数
传递
(或)
将 session ID 放入传出 HTTP header 中,例如
GET / HTTP/1.0
Accept: text/plain
Accept: text/html
Session-Id:DFF55566_SOMEID
但是要使这两者都起作用,您的 Web 服务器必须在服务器级别(或您的应用程序级别)以某种格式期待来自客户端的Session Id
。
关于java - 使用 Java Web 服务。 id session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516619/