axis2 java.net.url_axis,axis2调用.net的webservice
package testClick.src.test;import javax.xml.namespace.QName;import org.apache.axiom.om.OMAbstractFactory;import org.apache.axiom.om.OMElement;import org.apache.axiom.om.OMFactory;import org.apache.axiom.om.OMNamespace;import
今天一個(gè)朋友咨詢(xún)java調(diào)用.net的webservice功能,折騰了2個(gè)小時(shí),也都折騰出來(lái)了,貼出來(lái),希望用到的朋友少走彎路
1、axis調(diào)用.net的webservicepackage test;
import java.net.URL;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.rpc.ParameterMode;
public class Test {
public static void test() throws Exception{
Service service = new Service();
Call call = null;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"));
call.setOperationName(new QName("http://WebXml.com.cn/","getWeatherbyCityName"));
call.addParameter(new QName("http://WebXml.com.cn/", "theCityName"),XMLType.SOAP_VECTOR,ParameterMode.IN);
call.setReturnType(XMLType.SOAP_VECTOR);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://WebXml.com.cn/getWeatherbyCityName");
System.out.println(call.invoke(new Object[]{"廣州"}));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
test();
}
}
2、axis2調(diào)用.net的webservice
axis2調(diào)用不需要寫(xiě)那么多,按照下面的步驟,一步一步來(lái),簡(jiǎn)單你都想象不到
1、下載axis2(到apache官網(wǎng)下載www.apache.org)
2、我下載的是axis2-1.5-bin.zip,解壓到當(dāng)前文件夾
3、進(jìn)入bin目錄(F:\study\java\service\axis2\axis2-1.5\bin)
4、打開(kāi)cmd,進(jìn)入第3步的bin目錄,輸入wsdl2java.bat -uri http://www.webxml.c
om.cn/WebServices/WeatherWebService.asmx?wsdl,回車(chē)
5、之后會(huì)在bin目錄下生成一個(gè)src目錄,將src目錄下的兩個(gè)類(lèi)考到eclipse開(kāi)發(fā)目錄下
6、建一個(gè)測(cè)試類(lèi)Test,代碼如下
import cn.com.webxml.WeatherWebServiceStub;
import cn.com.webxml.WeatherWebServiceStub.ArrayOfString;
import cn.com.webxml.WeatherWebServiceStub.GetWeatherbyCityName;
public class Test {
public static void test1(){
try{
WeatherWebServiceStub stub = new WeatherWebServiceStub();
stub._getServiceClient().getOptions().setProperty(
org.apache.axis2.transport.http.HTTPConstants.CHUNKED,
Boolean.FALSE);
GetWeatherbyCityName city = new GetWeatherbyCityName();
city.setTheCityName("廣州");
ArrayOfString array = stub.getWeatherbyCityName(city).getGetWeatherbyCityNameResult();
String[] str = array.getString();
for(String s : str){
System.out.println(s);
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
test1();
}
}
需要注意的是這個(gè)類(lèi) GetWeatherbyCityName,這個(gè)本來(lái)是.net webservice中的一個(gè)方法,如下
POST /WebServices/WeatherWebService.asmx HTTP/1.1
Host: www.webxml.com.cn
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://WebXml.com.cn/getWeatherbyCityName"
string
用axis2生成java代碼后,Instantaneous Transference Time Limit:?5000MS ? Memory Limit:?65536K Total Submissions:?6367 ? Accepted:?1439 Description It was long ago when we played the game Red Alert. There is a magic function for the game objects which is called inst會(huì)自動(dòng)生成一個(gè)對(duì)應(yīng)的對(duì)象,webservice需要傳遞的參數(shù),可以通過(guò)對(duì)這個(gè)對(duì)象賦值操作完成,如上面,我要查廣州的天氣,就設(shè)置為city.setTheCityName("廣州");
注意,關(guān)鍵的地方
由于.net webservice中返回的是ArrayOfString,java中沒(méi)有這個(gè)對(duì)象,所以axis2會(huì)自動(dòng)生成這個(gè)對(duì)象,然后轉(zhuǎn)換成對(duì)應(yīng)的數(shù)組即可,如String[] str = array.getString();在axis版本中,使用的是返回類(lèi)型,但是返回類(lèi)型設(shè)置其他的比如String等都會(huì)報(bào)錯(cuò),只能設(shè)置成VECTOR,即call.setReturnType(XMLType.SOAP_VECTOR),如果只返回一個(gè)字符串,可以直接使用STRING;這樣才能確保返回正確。
比較兩個(gè)版本,還是覺(jué)得axis2使用方便
總結(jié)
以上是生活随笔為你收集整理的axis2 java.net.url_axis,axis2调用.net的webservice的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python中 普通方法_python中
- 下一篇: php实现贴吧功能,PHPCMS V9万