WebService系列之使用Axis获取天气预报数据
生活随笔
收集整理的這篇文章主要介紹了
WebService系列之使用Axis获取天气预报数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
測試工具下載soapui測試
http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
pom配置:
<properties> <!-- axis --><axis.version>1.4</axis.version><!-- commons-iscovery--><commons-discovery.version>0.2</commons-discovery.version><!-- wsdl4j --><wsdl4j.version>1.6.3</wsdl4j.version><!-- slf4j --><slf4j.version>1.7.29</slf4j.version><!-- fastjson --><fastjson.version>1.1.40</fastjson.version> <dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>${poi.version}</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>${poi.version}</version></dependency><dependency><groupId>org.apache.axis</groupId><artifactId>axis</artifactId><version>${axis.version}</version></dependency><dependency><groupId>org.apache.axis</groupId><artifactId>axis-saaj</artifactId><version>${axis.version}</version><scope>compile</scope></dependency><dependency><groupId>org.apache.axis</groupId><artifactId>axis-jaxrpc</artifactId><version>${axis.version}</version><scope>compile</scope></dependency><dependency><groupId>commons-discovery</groupId><artifactId>commons-discovery</artifactId><version>${commons-discovery.version}</version></dependency><dependency><groupId>wsdl4j</groupId><artifactId>wsdl4j</artifactId><version>${wsdl4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency> package com.example.common.util.webservice.axis;import org.apache.axis.Constants; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import org.apache.axis.types.Schema; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;public class WebServiceClientUtils {private static final Logger log = LoggerFactory.getLogger(WebServiceClientUtils.class); private static final Integer CONNET_TIME_OUT = 8000;public static void call(String point, String nameSpace, String methodName, Map<String, String> paramMap)throws Exception {// 創建call實例log.info("wsdl鏈接:{},命名空間:{},方法名:{}" , point , nameSpace , methodName);Call call = null;try {call = (Call) new Service().createCall();} catch (Throwable e) {log.error("new call失敗",e);}call.setTargetEndpointAddress(point);call.setOperationName(new QName(nameSpace, methodName));call.setUseSOAPAction(true);call.setSOAPActionURI(nameSpace + methodName);// 調用超時時間call.setTimeout(CONNET_TIME_OUT);// 存放入參數List<Object> paramValues = new ArrayList<Object>();if (paramMap != null && paramMap.size() > 0) {for (Map.Entry<String, String> param : paramMap.entrySet()) {call.addParameter(new QName(nameSpace, param.getKey()), Constants.XSD_STRING, ParameterMode.IN);paramValues.add(param.getValue());if (log.isInfoEnabled()) {log.info("webService參數封裝,參數:{},值為{}" , param.getKey(), param.getValue());}}}// 設置返回參數類型//call.setReturnType(Constants.XSD_STRING);//call.setReturnType(XMLType.SOAP_DOCUMENT);//call.setReturnType(XMLType.XSD_SCHEMA);call.setReturnClass(java.lang.String[].class);// 調用WebService服務if (log.isInfoEnabled()) {log.info("開始調用webService");}long start = System.currentTimeMillis();String[] res = (String[]) call.invoke(paramValues.toArray());long end = System.currentTimeMillis();if (log.isInfoEnabled()) {log.info("調用webService ;耗時:{}", (end - start) + "ms");}// WebService參數返回//String result = object.toString();for (int i = 0; i < res.length; i++) {System.out.println(res[i]);if (log.isInfoEnabled()) {log.info("WebService參數返回:{}", res[i]);}}}public static void main(String[] args) throws Exception {String point = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl";String nameSpace = "http://WebXml.com.cn/";String methodName = "getWeather";String theCityCode = "北京";String theUserID = "";Map<String, String> paramMap = new HashMap<String, String>(2);paramMap.put("theCityCode", theCityCode);paramMap.put("theUserID", theUserID);call(point, nameSpace, methodName, paramMap);} } 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的WebService系列之使用Axis获取天气预报数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝色版苹果iPhone 12开箱上手视频
- 下一篇: @产品部 -- 腾讯策划部是如何培养用户