志在指尖
用双手敲打未来

java调用webservice(三种方法调用接口)

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();}//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

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实现的具体细节不感兴趣,那么你只需要看接口文件即可,
在运用的时分,引进这个接口即可,就好像运用本地类一样。

未经允许不得转载:IT技术网站 » java调用webservice(三种方法调用接口)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载