如何调用webservice接口
生活随笔
收集整理的這篇文章主要介紹了
如何调用webservice接口
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
java調(diào)用WebService可以直接使用Apache提供的axis.jar自己編寫代碼,或者利用Eclipse自動生成WebService Client代碼,利用其中的Proxy類進(jìn)行調(diào)用。理論上是一樣的,只不過用Eclipse自動生成代碼省事些。
1、編寫代碼方式:
package com.yudun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException{//標(biāo)識Web Service的具體路徑String endpoint = "WebService服務(wù)地址";// 創(chuàng)建 Service實(shí)例Service service = new Service(); // 通過Service實(shí)例創(chuàng)建Call的實(shí)例Call call = (Call) service.createCall();//將Web Service的服務(wù)路徑加入到call實(shí)例之中.call.setTargetEndpointAddress( new java.net.URL(endpoint) );//為Call設(shè)置服務(wù)的位置// 由于需要認(rèn)證,故需要設(shè)置調(diào)用的SOAP頭信息。 Name headerName = new PrefixedQName( new QName("發(fā)布的wsdl里的targetNamespace里的url", "string_itemName") ); org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName); header.addTextNode( "blablabla" ); call.addHeader(header);// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("發(fā)布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("發(fā)布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement); //調(diào)用Web Service的方法org.apache.axis.description.OperationDesc oper;org.apache.axis.description.ParameterDesc param;oper = new org.apache.axis.description.OperationDesc();oper.setName("opName");param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);param.setOmittable(true);oper.addParameter(param);param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);param.setOmittable(true);oper.addParameter(param);param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);param.setOmittable(true);oper.addParameter(param);oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));oper.setReturnClass(java.lang.String.class);oper.setReturnQName(new javax.xml.namespace.QName("", "return"));oper.setStyle(org.apache.axis.constants.Style.WRAPPED);oper.setUse(org.apache.axis.constants.Use.LITERAL);oper.addFault(new org.apache.axis.description.FaultDesc(new javax.xml.namespace.QName("發(fā)布的wsdl里的targetNamespace里的url", "Exception"),"Exception",new javax.xml.namespace.QName("發(fā)布的wsdl里的targetNamespace里的url", "Exception"), true));call.setOperation( oper );call.setOperationName(new javax.xml.namespace.QName("發(fā)布的wsdl里的targetNamespace里的url", "opName"));//調(diào)用Web Service,傳入?yún)?shù)String res = ( String ) call.invoke( new Object[]("arg0","arg1"));System.out.println("===============");return res;}
/*** @param args*/public static void main(String[] args) {try {System.out.println(getResult());} catch (MalformedURLException e) {e.printStackTrace();} catch (RemoteException e) {e.printStackTrace();} catch (ServiceException e) {e.printStackTrace();} catch (SOAPException e) {e.printStackTrace();}}
}2、利用Eclipse自動生成WebService client代碼就容易多了:(由于還不會發(fā)圖片,就用語言描述了,大家酬和看吧。。。)
首先,new project,選擇other,在輸入框中輸入Web Service Client,選中搜索后的結(jié)果,點(diǎn)擊Next,在Service definition中輸入 WebService的發(fā)布地址,點(diǎn)擊Finish
這樣,WebService Client代碼已經(jīng)生成好了。
接下來寫一個Test類,在main函數(shù)中輸入如下代碼:String endpoint = "服務(wù)器的WebService的地址";YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint);try {String resultStr = umsp.opMethod("arg0","arg1");System.out.println(resultStr);} catch (Exception e) {System.out.println("異常");e.printStackTrace();
} catch (RemoteException e) {System.out.println("RemoteException異常");e.printStackTrace();
}
總結(jié)
以上是生活随笔為你收集整理的如何调用webservice接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Webservice接口、Webserv
- 下一篇: 国际货运快递操作流程