我試圖通過https使用JAX-WS調用webservice(用C#開發)。我已經嘗試通過SoapUI設置調用,並且這可以工作。與https url的Jax-ws結束爲http
但是,當試圖通過生成的jax-ws客戶端執行相同的操作時,我所得到的只是301迴應。這與我使用帶有http url的SoapUI到相同的服務相似,而wireshark也告訴我,我執行HTTP(HTTP/XML)POST操作。這使我相信,出於某種原因,我生成的JAX-WS客戶端試圖通過http而不是https調用。
Examplified代碼:
new MyServiceInterface(new URL("https://acme.com/services/MyService.svc?wsdl"))
.getMyPort().test();
正如你所看到的,我創建我的客戶時提供一個https
網址。還有什麼需要確保JAX-WS使用https?命名空間的URI都是http,這會導致問題嗎?
更新:
我已經實現了使用指南,從公認的答案在這裏quesiton該服務的SOAP請求:Working Soap client example 差不多多次從了SoapUI的信息,現在它給了我一個適當的200響應。
更新2:
調試時我的JAX-WS客戶端,我發現這個屬性:
"javax.xml.ws.service.endpoint.address" -> "http://acme.com/services/MyService.svc"
這有HTTP,HTTPS沒有。有關?
更新3:
當使用調試器 「javax.xml.ws.service.endpoint.address」 更改爲HTTPS URL,而不是HTTP,我的客戶端工作。但爲什麼它是以http開頭的?
看起來像在服務器端的問題。試試如果你可以在端口443訪問服務器。 – Stefan
由於SoaPUI的工作原理,我認爲服務器也可以工作嗎? – Tobb