以下為調用代碼
//類service需要導的包
import org.apache.axis.client.Service;
Service service = new Service();
Call call = service.createCall();
//需要通路的webservice位址http://ip:端口号/webservice釋出位址?wsdl
call.setTargetEndpointAddress("http://ip:端口号/webservice釋出位址?wsdl");
//QName參數 1,webservice的命名空間 2,需要通路的方法名
call.setOperationName(new QName("http://xxxxx/","xxx"));
//參數,對應要通路的方法參數,參數名字要和方法中參數一樣
call.addParameter("aaa", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("bbb", XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter("ccc", XMLType.XSD_STRING,ParameterMode.IN);
System.out.println("開始接口調用");
//調用,傳回的是xml結構的
Object o = call.invoke(new Object[]{"fdfds","eee","ggggg"});
System.out.println("獲得傳回值" + o);
webservice的命名空間,可以通過對方給的路徑來擷取
在浏覽器輸入位址http://ip:端口号/webservice釋出位址?wsdl
紅框中為webService的命名空間!
//另一種webservice請求方式,增加表頭
發送webservice代碼
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
String address = ip+webservice位址?wsdl";
org.apache.cxf.endpoint.Client client = dcf.createClient(address);
log.info("拼接的ip位址是" + address);
//增加表頭的方法
client.getOutInterceptors().add(new ClientAuthInterceptor(“需要的使用者名”, “需要的密碼”));
//body json資料
Object[] obj = client.invoke("commonRequest", “json資料”);
Object object = null;
if (null != obj) {
object = obj[0];
}
if (null == object) {
} else {
//得到傳回資料
String xmlString = object.toString();
log.info("傳回資料成功!");
log.info(xmlString);
}
//發送表頭的類
package com.ptpec.ims.service.card;
import java.util.List;
import javax.xml.namespace.QName;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.headers.Header;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
*
*/
public class ClientAuthInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
private String userName;
private String passWord;
public ClientAuthInterceptor(String userName, String passWord) {
//準備發送階段
super(Phase.PREPARE_SEND);
this.userName = userName;
this.passWord = passWord;
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
List<Header> headers = message.getHeaders();
Document doc = DOMUtils.createDocument();
Element auth = doc.createElement("AuthenticationToken");
Element username = doc.createElement("Username");
username.setTextContent(userName);
Element password = doc.createElement("Password");
password.setTextContent(passWord);
auth.appendChild(username);
auth.appendChild(password);
headers.add(new Header(new QName(""), auth));
System.out.println("------------------"+headers);
}
}