eclipse自帶外掛生成的webservice 客戶端認證及soapenv:Header資訊新增
阿新 • • 發佈:2019-02-10
最近對接一個soap webservice 介面,需要basic 認證和soap頭標籤認證:
1.eclipse生成webservice client程式碼。
2.找到XXXXXProxy.java 介面的代理類。
3.找到_initXXXXXProxy方法
//新增認證 javax.xml.rpc.Stub stub = (javax.xml.rpc.Stub)XXXXX;//stub 提取出來 stub._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY, "username");//使用者名稱 stub._setProperty(javax.xml.rpc.Stub.PASSWORD_PROPERTY, "password");//密碼
4.這樣就可以呼叫webservice的方法了//新增Header /**<soapenv:Header> * <cis:Authentification> * <cis:user>?</cis:user> * <cis:signature>?</cis:signature> * </cis:Authentification> * </soapenv:Header> */ SOAPFactory soapFactory = SOAPFactory.newInstance(); SOAPElement wsSecHeaderElm = soapFactory.createElement("Authentification", AUTH_PREFIX, AUTH_NS); SOAPElement userEle = soapFactory.createElement("user",AUTH_PREFIX, AUTH_NS); SOAPElement passwdElm = soapFactory.createElement("signature",AUTH_PREFIX, AUTH_NS); userEle.addTextNode("user"); passwdElm.addTextNode("signature"); wsSecHeaderElm.addChildElement(userEle); wsSecHeaderElm.addChildElement(passwdElm); SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(wsSecHeaderElm); soapHeaderElement.setMustUnderstand(false); stub.setHeader(soapHeaderElement); if (_endpoint != null) stub._setProperty("javax.xml.rpc.service.endpoint.address", _endpoint); else _endpoint = (String)(stub)._getProperty("javax.xml.rpc.service.endpoint.address");
XXXXX poxy = new XXXXXProxy(URL);