博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebService - Client调用(Axis2-Document)
阅读量:6613 次
发布时间:2019-06-24

本文共 3032 字,大约阅读时间需要 10 分钟。

hot3.png

采用RPC的方式参考博文:Client调用(Axis2-RPC)。

采用的免费webservice接口:

http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

1
客户端调用代码如下:

package com.web.hh.constroller;

import java.util.Iterator;

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 org.apache.axiom.soap.SOAP11Constants;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

public class ClientWeather {

    /*
     * 第二种方式,手动调用
     */
    public static void main(String[] args) throws AxisFault {
        ServiceClient serviceClient = new ServiceClient();  
        Options option = new Options();
        option.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);  
        option.setTransportInProtocol(Constants.TRANSPORT_HTTP);  
        option.setAction("http://WebXml.com.cn/getWeather");  
        // 值为targetNamespace+methodName
        EndpointReference epfs = new EndpointReference("http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl");  
        option.setTo(epfs);  
        serviceClient.setOptions(option);  

        OMFactory fac = OMAbstractFactory.getOMFactory();  

        OMNamespace namespace = fac.createOMNamespace("http://WebXml.com.cn/", "");  
        OMElement element = fac.createOMElement("getWeather", namespace);  
        OMElement theCityCode = fac.createOMElement("theCityCode ", namespace);  
        theCityCode.setText("北京");  
        element.addChild(theCityCode);  
        OMElement theUserID = fac.createOMElement("theUserID ", namespace);  
        theUserID.setText("");  
        element.addChild(theUserID);  

        OMElement result = serviceClient.sendReceive(element);  

        System.out.println(result);   
        System.out.println("****************************************************************************************************************");
        Iterator in = result.getChildrenWithLocalName("getWeatherResult");  
        while(in.hasNext()){  
            OMElement om = (OMElement)in.next();  
            Iterator in2 = om.getChildElements();  
            while(in2.hasNext()){  
//                System.out.println(in2.next().toString());  
                System.out.println(((OMElement)in2.next()).getText());  
            }  
        }  
    }  
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
输出结果如下:

【Tips】上面服务是不需要验证的,如果需要验证,参考代码如下:

 /** 

  * 为SOAP Header构造验证信息, 
  * 如果你的服务端是没有验证的,那么你不用在Header中增加验证信息 
  * 
  * serviceClient 
  * tns 命名空间 
  * user 
  * passwrod 
  */  
  public void addValidation(ServiceClient serviceClient, String tns , String user, String passwrod) {  
    OMFactory fac = OMAbstractFactory.getOMFactory();  
    OMNamespace omNs = fac.createOMNamespace(tns, "nsl");  
    OMElement header = fac.createOMElement("AuthenticationToken", omNs);  
    OMElement ome_user = fac.createOMElement("Username", omNs);  
    OMElement ome_pass = fac.createOMElement("Password", omNs);  

    ome_user.setText(user);  

    ome_pass.setText(passwrod);  

    header.addChild(ome_user);  

    header.addChild(ome_pass);  

    serviceClient.addHeader(header);  

  }  
--------------------- 

转载于:https://my.oschina.net/xiaominmin/blog/2967080

你可能感兴趣的文章
Mastering Django: Core 精通 Django
查看>>
php加密解密函数
查看>>
对Java多线程技术中所有方法的详细解析
查看>>
adb shell下查看sqlite数据库
查看>>
表格排序的具体案例(包括数字和汉字排序)
查看>>
C语言基础(三)
查看>>
Linux chgrp
查看>>
Docker运行程序报错 WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
[Selenium] IOS 之 ios-driver
查看>>
文本输入的几种特殊验证方式
查看>>
BZOJ3195:[JXOI2012]奇怪的道路——题解
查看>>
BZOJ4034:[HAOI2015]树上操作——题解
查看>>
47. Ext.form.Field.prototype.msgTarget
查看>>
jsp显示计算数值, 四舍五入
查看>>
HTML和CSS疑点解析
查看>>
剑指offer 快速排序
查看>>
Java Socket编程入门
查看>>
PropertyGrid排序
查看>>
20款PHP版WebMail开源项目
查看>>
4-4 Selector有一个方法可以获取Selector中的文本内容---extract()
查看>>