webservice内容简单解析和调用

原文地址:spring boot + cfx实现webservice功能
扩展阅读:No operation was found with the name解决方法总结


调用方法如下:

private static void printUserList() {
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        // 这里填自己的接口地址
        Client client = dcf.createClient("http://210.85.293.34:6666/Service/WebService.asmx?wsdl");
        // 需要密码的情况需要加上用户名和密码
        // client.getOutInterceptors().add(new ClientLoginInterceptor("gxhsg2016", "Eyjp4Z1s"));
        Object[] objects = new Object[0];
        try {
            // invoke("方法名",参数1,参数2,参数3....);
            objects = client.invoke("FindPeople", "gxhsg2016",1);
            if (objects.length > 0) {
                System.out.println("方法调用成功,详情如下:");
                ArrayList<Object> objectList = (ArrayList) objects[0];
                for (Object o : objectList) {
                    JSONObject jsonObject = JSONObject.fromObject(o);
                    System.out.println(jsonObject);
                }
            }
        } catch (java.lang.Exception e) {
            e.printStackTrace();
        }
    }

这里的代码仅是应急所用,下面贴一下自己看了半天的文档之后的解析:

<wsdl:definitios xmlns:...>
	<wsdl:types>
		<xs:schema xmlns:...>
			<xs:element name="FindPeople">
				<xs:complexType>
					<xs:sequence>
						<xs:element minOccurs="0" name="name" type="xs:string"/>
						<xs:element name="age" type="xs:int"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="FindPeopleResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element minOccurs="0" name="FindPeopleResult" type="tns:People"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			...
			<!-- 
			一般来说在标签<xs:scheme>内存成对存在<xs:element name="method"><xs:element name="methodResponse">
			前者表示接口的的方法,其中的子子标签中的<xs:element>则表示这个方法的参数列表,调用时各个参数的顺序
			和类型必须和文档中一一对应。后者据说是前者的返回值,
			在一个<xs:schema>标签中可能会使用<xs:element>表示多对这样的方法与返回值标签,
			另外<xs:schema>还有一个子标签<xs:complexType name="POJO1">,这个标签的意思为复杂类型,可理解为复杂实体类,
			如果仔细观察的话可发现上方的某个<xs:element name="methodXXResponse">中的返回值就是这些复杂实体类
			-->
			<xs:complexType name="People">...</xs:complexType>
			...
		</xs:schema>
	</wsdl:types>
	<!-- 下面的就不知道干吗的了 -->
	<wsdl:message>
	</wsdl:message>
	
	<wsdl:portType>
	</wsdl:portType>
	
	<wsdl:binding>
	</wsdl:binding>
	
	<wsdl:service>
	</wsdl:service>
</wsdl:definitios>

亦或者可以通过idea/eciplise插件在本地生成代码,直接在本地调用。
链接地址:idea通过wsdl文件自动生成webservice客户端java代码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值