[英]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.