webservice的发布一般都是运用WSDL(webservicedescriptivelanguage)文件的款式来发布的,在WSDL文件里边,包含这个webservice暴露在外面可供运用的接口。今日搜索到了非常好的webserviceprovider列表
http://www.webservicex.net/WCF/default.aspx
这上面列出了70多个包括很多方面的freewebserviceprovider,utilities->globalweather就可以获取全球的天气预报。
下面咱们来看Java如何通过WSDL文件来调用这些webservice:
注意,以下的代码并没有通过真正的测验,仅仅阐明这些情况,不同版本的Axis相差很大,大家最好以apache网站上的比如为准,这里仅仅用于阐明其基本用法。
1,直接AXIS调用远程的webservice
我觉得这种方法比较适合那些高手,他们能直接看懂XML格局的WSDL文件,我自己是看不懂的,尤其我不是专门搞这行的,即使一段时间看懂,后来也就忘记了。直接调用形式如下:
importjava.util.Date;importjava.text.DateFormat;importorg.apache.axis.client.Call;importorg.apache.axis.client.Service;importjavax.xml.namespace.QName;importjava.lang.Integer;importjavax.xml.rpc.ParameterMode;publicclasscaClient{publicstaticvoidmain(String[]args){try{Stringendpoint=”http://localhost:8080/ca3/services/caSynrochnized?wsdl”;//直接引证远程的wsdl文件//以下都是套路Serviceservice=newService();Callcall=(Call)service.createCall();call.setTargetEndpointAddress(endpoint);call.setOperationName(“addUser”);//WSDL里边描绘的接口名称call.addParameter(“userName”,org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);//接口的参数call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置回来类型Stringtemp=”测验人员”;Stringresult=(String)call.invoke(newObject[]{temp});//给方法传递参数,而且调用方法System.out.println(“resultis”+result);}catch(Exceptione){System.err.println(e.toString());}}}
2,直接SOAP调用远程的webservice
这种形式我从来没有见过,也没有试过,可是网络上有人贴出来,我也转过来
importorg.apache.soap.util.xml.*;importorg.apache.soap.*;importorg.apache.soap.rpc.*;importjava.io.*;importjava.net.*;importjava.util.Vector;publicclasscaService{publicstaticStringgetService(Stringuser){URLurl=null;try{url=newURL(“http://192.168.0.100:8080/ca3/services/caSynrochnized”);}catch(MalformedURLExceptionmue){returnmue.getMessage();}//ThisisthemainSOAPobjectCallsoapCall=newCall();//UseSOAPencodingsoapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);//Thisistheremoteobjectwe’reaskingforthepricesoapCall.setTargetObjectURI(“urn:xmethods-caSynrochnized”);//ThisisthenameofthemethodontheaboveobjectsoapCall.setMethodName(“getUser”);//WeneedtosendtheISBNnumberasaninputparametertothemethodVectorsoapParams=newVector();//name,type,value,encodingstyleParameterisbnParam=newParameter(“userName”,String.class,user,null);soapParams.addElement(isbnParam);soapCall.setParams(soapParams);try{//InvoketheremotemethodontheobjectResponsesoapResponse=soapCall.invoke(url,””);//Checktoseeifthereisanerror,return”N/A”if(soapResponse.generatedFault()){Faultfault=soapResponse.getFault();Stringf=fault.getFaultString();returnf;}else{//readresultParametersoapResult=soapResponse.getReturnValue();//getastringfromtheresultreturnsoapResult.getValue().toString();}}catch(SOAPExceptionse){returnse.getMessage();}}}
3,运用wsdl2java把WSDL文件转成本地类,然后像本地类一样运用,即可。
这是像我这种懒人最喜欢的方法,依然以前面的globalweatherreport为例。
首要javaorg.apache.axis.wsdl.WSDL2Java
http://www.webservicex.net/globalweather.asmx.WSDL
本来的网址是http://www.webservicex.net/globalweather.asmx?WSDL,中间个各问号,可是Linux下面它不能解析,所以去掉问号,改为点号。
那么就会出现4个文件:
GlobalWeather.java
GlobalWeatherLocator.java
GlobalWeatherSoap.java
GlobalWeatherSoapStub.java
其中GlobalWeatherSoap.java是咱们最为关心的接口文件,假如你对RMI等SOAP实现的具体细节不感兴趣,那么你只需要看接口文件即可,在运用的时分,引入这个接口即可,就好像运用本地类一样。
java调用webservice三种方法调用接口
webservice的发布一般都是运用WSDL(webservicedescriptivelanguage)文件的款式来发布的,在WSDL文件里边,包括这个webservice暴露在外面可供运用的接口。今天查找到了非常好的webserviceprovider列表
http://www.webservicex.net/WCF/default.aspx
这上面列出了70多个包括很多方面的freewebserviceprovider,utilities->globalweather就可以获取全球的天气预报。
下面咱们来看Java如何通过WSDL文件来调用这些webservice:
留意,以下的代码并没有通过真实的测验,只是说明这些状况,不同版本的Axis相差很大,咱们最好以apache网站上的例子为准,这儿仅仅用于说明其基本用法。
1,直接AXIS调用长途的webservice
我觉得这种办法比较适合那些高手,他们能直接看懂XML格局的WSDL文件,我自己是看不懂的,尤其我不是专门搞这行的,即使一段时间看懂,后来也就忘记了。直接调用形式如下:
importjava.util.Date;
importjava.text.DateFormat;
importorg.apache.axis.client.Call;
importorg.apache.axis.client.Service;
importjavax.xml.namespace.QName;
importjava.lang.Integer;
importjavax.xml.rpc.ParameterMode;
publicclasscaClient{
publicstaticvoidmain(String[]args){
try{
Stringendpoint=”http://localhost:8080/ca3/services/caSynrochnized?wsdl”;
//直接引用长途的wsdl文件
//以下都是套路
Serviceservice=newService();
Callcall=(Call)service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName(“addUser”);//WSDL里边描绘的接口名称
call.addParameter(“userName”,
org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);//接口的参数
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置回来类型
Stringtemp=”测验人员”;
Stringresult=(String)call.invoke(newObject[]{temp});
//给办法传递参数,而且调用办法
System.out.println(“resultis”+result);
}catch(Exceptione){
System.err.println(e.toString());
}
}
}
2,直接SOAP调用长途的webservice
这种形式我从来没有见过,也没有试过,可是网络上有人贴出来,我也转过来
importorg.apache.soap.util.xml.*;
importorg.apache.soap.*;
importorg.apache.soap.rpc.*;
importjava.io.*;
importjava.net.*;
importjava.util.Vector;
publicclasscaService{
publicstaticStringgetService(Stringuser){
URLurl=null;
try{
url=newURL(
“http://192.168.0.100:8080/ca3/services/caSynrochnized”);
}catch(MalformedURLExceptionmue){
returnmue.getMessage();
}
//ThisisthemainSOAPobject
CallsoapCall=newCall();
//UseSOAPencoding
soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
//Thisistheremoteobjectwe’reaskingfortheprice
soapCall.setTargetObjectURI(“urn:xmethods-caSynrochnized”);
//Thisisthenameofthemethodontheaboveobject
soapCall.setMethodName(“getUser”);
//WeneedtosendtheISBNnumberasaninputparametertothemethod
VectorsoapParams=newVector();
//name,type,value,encodingstyle
ParameterisbnParam=newParameter(“userName”,String.class,user,
null);
soapParams.addElement(isbnParam);
soapCall.setParams(soapParams);
try{
//Invoketheremotemethodontheobject
ResponsesoapResponse=soapCall.invoke(url,””);
//Checktoseeifthereisanerror,return”N/A”
if(soapResponse.generatedFault()){
Faultfault=soapResponse.getFault();
Stringf=fault.getFaultString();
returnf;
}else{
//readresult
ParametersoapResult=soapResponse.getReturnValue();
//getastringfromtheresult
returnsoapResult.getValue().toString();
}
}catch(SOAPExceptionse){
returnse.getMessage();
}
}
}
3,运用wsdl2java把WSDL文件转成本地类,然后像本地类一样运用,即可。
这是像我这种懒人最喜欢的方法,仍然以前面的globalweatherreport为例。
首要javaorg.apache.axis.wsdl.WSDL2Javahttp://www.webservicex.net/globalweather.asmx.WSDL
WSDL,中心个各问号,可是Linux下面它不能解析,所以去掉问号,改为点号。
那么就会呈现4个文件:
GlobalWeather.java
GlobalWeatherLocator.java
GlobalWeatherSoap.java
GlobalWeatherSoapStub.java
其间GlobalWeatherSoap.java是咱们最为关怀的接口文件,如果你对RMI等SOAP实现的具体细节不感兴趣,那么你只需要看接口文件即可,
在运用的时分,引进这个接口即可,就好像运用本地类一样。
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com