簡體   English   中英

消耗Java Web服務。 ID會話問題

[英]consuming Java web services. Issues with id session

我在Internet上遇到一些問題,幾乎沒有關於ID會話令牌和Java Web服務的文檔。 我們有一台服務器(Tomcat在JAX-WS + SOAP上提供Web服務)正在提供用於查詢SQL服務器的API。

我必須編寫一個簡單的Java客戶端,通過此Web服務與服務器進行通信。 問題在於,在能夠使用其任何服務器WSDL方法之前,客戶端必須通過Web服務器方法進行身份驗證,然后在該方法中向用戶發送用戶名/密碼,然后服務器將會話ID(字母數字字符串)返回給客戶端。

其余方法沒有可傳遞會話ID的任何類型的參數,因此我認為它必須用作“上下文”。 我發現了有關如何在JAX-WS中維護會話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);

它可以編譯,但是當我通過某些方法查詢Web服務器時,會收到“空”消息,就像我不執行身份驗證過程一樣。 我認為我的問題是我不知道我在cookie會話ID身份驗證過程中做錯了什么。

如果有人可以幫助我,我將不勝感激。

問候。

您可以使用GET或POST方法將其作為Request Parameter傳遞

(要么)

將會話ID放入傳出的HTTP標頭中,例如

GET / HTTP/1.0
Accept: text/plain
Accept: text/html
Session-Id:DFF55566_SOMEID

但是,要使這兩種方法都起作用,您的Web服務器必須在服務器級別(或應用程序級別)以某種格式從客戶端獲得Session Id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM