最近有項目要用java調用webservice,而且服務端用的是.net。走了許多彎路。最後通過axis2實現功能。
代碼部分上半部分是java代碼,下半部分是maven的pom文件:
//endpoint 爲 webserviceurl GetInfoByTypeAndArea 爲方法名
EndpointReference targetEPR = new EndpointReference(endpoint);
Options options = new Options();
options.setAction("http://tempuri.org/GetInfoByTypeAndArea");// 調用接口方法
options.setTo(targetEPR);
options.setProperty(HTTPConstants.CHUNKED, "false");// 設置不受限制.
ServiceClient sender = null;
try {
sender = new ServiceClient();
sender.setOptions(options);
OMFactory fac = OMAbstractFactory.getOMFactory();
//-----------------------------複雜配置start------------------------------------------
OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/", "");//設置命名空間
OMElement method = fac.createOMElement("GetInfoByTypeAndArea", omNs);//設置方法名稱
OMElement type = fac.createOMElement("type", omNs), staX = fac.createOMElement("staX", omNs),
staY = fac.createOMElement("staY", omNs), endX = fac.createOMElement("endX", omNs),
endY = fac.createOMElement("endY", omNs), strwhere = fac.createOMElement("strwhere", omNs);//創建所有參數
//爲參數賦值
type.setText("12"); method.addChild(type); staX.setText("0");
method.addChild(staX); staY.setText("1"); method.addChild(staY);
endX.setText("0"); method.addChild(endX); endY.setText("1");
method.addChild(endY); strwhere.setText("1"); method.addChild(strwhere);
method.build();
//-----------------------------複雜配置end------------------------------------------
System.out.println("method:" + method.toString());
OMElement response = sender.sendReceive(method);
System.out.println("response:" + response);
System.out.println("cityCode:" + response.getFirstElement().getText());
} catch (AxisFault e) { System.out.println("Error"); }
org.apache.axis2axis2${axis2.version}pomcompileorg.apache.axis2axis2-adb${axis2.version}jarcompileorg.apache.axis2axis2-kernel${axis2.version}jarcompileorg.apache.axis2axis2-transport-local${axis2.version}org.apache.axis2axis2-transport-http${axis2.version}