• Java 常调用的Webservice接口的方法


      WebService是基于Web的服务,WebService使用SOAP协议实现跨编程语言和跨操作系统平台,接收和响应外部系统的某种请求,从而实现远程调用。WebService采用HTTP协议传输数据,采用XML格式封装数据,SOAP协议=HTTP协议+XML数据格式。主要解决不了不同的系统或者调用分布部署的处理数据项目返回的接口。

      最近自己在项目中,调用webService接口常用到两种方法,自己觉得也比较好用,在这里记录一下。

      第一种,采用httpclient 请求,这种跟我们经常用的HTTP请求一样,结果可以是返回XML格式的字符串,我们比较容易对其进行解析,取得我们想要的数据。

      地址:列如 http://www.xxx.com/WeatherWS/Weather.asmx?wsdl 

      调用的方法是:GetCityForecastByZIP   方法参数是: ZIP

      需要的JAR如下:

      commons-codec-1.4.jar

      commons-httpclient-3.1.jar

      jsoup-1.6.2.jar

      commons-logging-1.0.4.jar

     代码:

              InputStream is = null;
    
          HttpClient client = new HttpClient();
    
    PostMethod method = new PostMethod("www.xxx.com/WeatherWSS/Weather.asmx/GetCityForecastByZIP");
    
    method.setRequestHeader("Host", "www.xxx.com");
    
    method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    
    method.setParameter("ZIP", "90001");
    
    try {
    
    client.executeMethod(method);
    
    is = method.getResponseBodyAsStream();
    
    Document document = Jsoup.parse(is,"gbk","");
    
    System.err.println(document);
    
    } catch (Exception e) {
    
    e.printStackTrace();
    
    }finally{
    
    method.releaseConnection();
    
    try {
    
    if(is!=null){
    
    is.close();
    
    }
    
    } catch (IOException e) {
    
    e.printStackTrace();
    
    }
    
    }

     

       我这边 document  是返回XML格式的形式,可以对进行处理,获取我们想要的数据。 

       如图:

           

          

                   

       第二种:采用axis2来调用。这种 axis2通用性不好,有的web服务用axis2不好用。 

      地址:列如 http://www.xxx.com/WeatherWS/Weather.asmx?wsdl  

      调用的方法是:GetCityForecastByZIP   方法参数是: ZIP 

      需要的JAR如下: 

    axis-ant.jar
    axis.jar
    commons-discovery-0.2.jar
    commons-logging-1.0.4.jar 
    jaxrpc.jar 
    wsdl4j-1.5.1.jar

          代码:  

              try{
    
     
    
            // 指出service所在URL       
    
            String endpoint = "http://www.xxx.com/WeatherWS/Weather.asmx";  
    
          String targetNamespace = "http://www.xxx.com/WeatherWS/";
    
             String method="GetCityForecastByZIP";
    
            // 创建一个服务(service)调用(call)       
    
            Service service = new Service();  
    
            Call call = (Call) service.createCall();// 通过service创建call对象       
    
      
    
            // 设置service所在URL       
    
            call.setTargetEndpointAddress(new java.net.URL(endpoint));  
    
            call.setOperationName(new QName(targetNamespace, method));
    
            call.setUseSOAPAction(true);
    
            call.addParameter(new QName(targetNamespace,"ZIP"), org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);//接口的参数
    
            //call.setReturnClass(org.w3c.dom.Element.class); 
    
            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型  
    
         //String path = targetNamespace + method;
    
    //call.setSOAPActionURI(path);
    
            Object ret = call.invoke(new Object[] {"90001"});  
    
            System.out.println("xx==="+ret.toString()); 
    
    }catch(Exception e){
    
    e.printStackTrace();
    
    }
    
           

     我比较经常使用httpclient 请求。也可以使用WSDL2JAVA把WSDL文件转为本地的服务类,然后可以直接调用。

  • 相关阅读:
    CF 149D Coloring Brackets(区间DP,好题,给配对的括号上色,求上色方案数,限制条件多,dp四维)
    hdu 4607 树形dp 树的直径
    poj 2955 区间dp入门题
    poj 2139 flord水题
    poj 2377 最大生成树
    lightoj 1422 区间dp
    模拟类似括号匹配
    nyoj 33 蛇形填数
    nyoj 2 括号配对问题水
    Hackonacci Matrix Rotations 观察题 ,更新了我的模板
  • 原文地址:https://www.cnblogs.com/koal/p/4982762.html
Copyright © 2020-2023  润新知