JAVA调用第三方webservice应用实例

互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示。

一:调用免费的web service获取天气预报信息   

1.第三方服务地址

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

原来的地址因为第三方要收费所以没用了(http://www.webxml.com.cn/WebServices/WeatherWebService.asmx )

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

2.生成本地java代码(借助wsimport命令工具自动生成客户端代码)

打开命令行窗口,切换到项目的src目录,执行"wsimport -keep http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl"生成客户端代码,如下图所示:

运行结果显示,使用wsimport工具直接生成客户端代码会抛异常, 无法生成客户端代码, 只是因为我们要调用的WebService是用.net写的,这个是Java调用net的webservice都有的问题,这个问题的解决办法如下:

1、将对应的wsdl文档保存到本地

2、修改wsdl文档的部分内容: <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>

3、再次执行wsimport生成代码,这次使用保存在本地的WeatherWS.wsdl文件来进行生成,如下图所示:

注意:生成代码的过程中虽然有警告,但可以不必理会,没有报错,说明代码生成成功了。

从执行结果显示,这一次可以正常生成代码了,刷新一下src目录,就可以看到生成的代码了

 3.借助生成的代码编写请求代码

package com.example.demo;

import new_src.cn.com.webxml.ArrayOfString;
import new_src.cn.com.webxml.WeatherWS;
import new_src.cn.com.webxml.WeatherWSSoap;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;


/**
 * Created by sjgtw-zzr on 2020/4/16.
 */
@SpringBootTest
public class WeatherWSClientNew {
    public static void main(String[] args) {
        WeatherWS factory = new WeatherWS();
        WeatherWSSoap weatherWSSoap = factory
                .getWeatherWSSoap();
        ArrayOfString weatherInfo = weatherWSSoap.getSupportCityString("311101");
        List<String> lstWeatherInfo = weatherInfo.getString();
        for (String string : lstWeatherInfo) {
            System.out.println(string);
            System.out.println("------------------------");
        }
    }
}

 测试结果:

北京,792
------------------------
昌平,785
------------------------
大兴,826
------------------------
房山,827
------------------------
怀柔,752
------------------------
门头沟,788
------------------------
密云,751
------------------------
平谷,756
------------------------
顺义,741
------------------------
通州,3409
------------------------
延庆,746
------------------------
海淀,742
------------------------
朝阳,3408
------------------------
丰台,795
------------------------
石景山,794
------------------------

以上,就是一个完整的第三方的webservice服务的调用的实例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章