1. 程式人生 > >eclipse自帶外掛生成的webservice 客戶端認證及soapenv:Header資訊新增

eclipse自帶外掛生成的webservice 客戶端認證及soapenv:Header資訊新增

最近對接一個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");//密碼
//新增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");
4.這樣就可以呼叫webservice的方法了
XXXXX poxy = new XXXXXProxy(URL);