java呼叫外部webservice的例項
阿新 • • 發佈:2018-11-16
package com.hj.services.webservices; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class WebServicesClient { public static void main(String[] args) throws Exception { //new 一個服務 Service sv = new Service(); //建立一個call物件 Call call = (Call) sv.createCall(); //設定要呼叫的介面地址以上一篇的為例子 call.setTargetEndpointAddress(new URL("http://192.168.200.39:8080/creazy")); //設定要呼叫的介面方法 call.setOperationName(new QName("getUsers")); //設定引數名 id 第二個引數表示String型別,第三個引數表示入參 call.addParameter("id", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN); //返回引數型別 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); //開始呼叫方法,假設我傳入的引數id的內容是1001 呼叫之後會根據id返回users資訊, // 以xml格式的字串返回,也可以json格式主要看對方用什麼方式返回 String result = (String) call.invoke(new Object[]{"1001"}); //列印字串 System.out.println(result); //轉成Document物件 Document doc = DocumentHelper.parseText(result); //用dom4j方式拿到xml的根節點然後列印結果資訊 Element root = doc.getRootElement(); System.out.println("id="+root.element("UsersID").getText()+" name="+root.element("UsersName").getText()+" sex="+root.element("UsersSex").getText()); } }
XFire方式
public boolean CallWebServiceCaseSender(String xmlString, String url)throws MalformedURLException { //ICaseWrite.class 為介面 org.codehaus.xfire.service.Service serviceModel = new ObjectServiceFactory().create(ICaseWrite.class); ICaseWrite servcie; servcie = (ICaseWrite) new XFireProxyFactory().create(serviceModel,url); boolean bs = servcie.caseWrite(xmlString); return bs; }
public interface ICaseWrite {
public boolean synchXfDclx(String caseid);
public boolean caseWrite(String xml);
}