WebService介绍与java调用WebService方法两种方式介绍

WebService介绍与java调用WebService方法两种方式介绍,第1张

WebService介绍与java调用WebService方法两种方式介绍 WebService介绍与java调用WebService方法两种方式介绍 WebService相关术语介绍
  • SOAP (Simple Objext Access) 简单对象访问协议
  • WASDL (Web Service Definition Language) web服务语言与结构分析
  • UDDI(Universal Description Discovery Integration) 统一描述发现和集成
WebService主要解决问题
  • 不同系统、不同平台、不同语言之间的通信访问和调用
  • 应用程序的集成,不同业务的整合
WebService应用
  • QQ中的天气预报
  • 淘宝中可以查看第三方快递信息,比如查看中通快递信息
java调用WebService两种方式 方式一,需要下载客户端代码 步骤

以调用第三方天气接口为例:
天气接口地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

Step1: 打开项目文件目录路径文件夹,在当前文件夹打开cmd,其中exam是项目包目录,输入

wsimport -keep -p exam -verbose

Step2: 如果遇到如下错误:

用浏览器打开:天气接口地址http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

ctrl+s保存文件为weather.wsdl。用编辑器打开下载的文件,将

 

修改成


Step3:打开保存的文件路径输入cmd,输入
wsimport -s .   weather.wsdl

生成的文件

文件内容:

Step4,测试java调用webservice天气接口 测试代码
public class Test {
    public static void main(String[] args) throws MalformedURLException {
//        URL url=new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl");
//        WeatherWebService ws = new WeatherWebService(url);
        WeatherWebService ws = new WeatherWebService();
        //WeatherWebServiceSoap为调用的实现类
        WeatherWebServiceSoap wsSoap = ws.getWeatherWebServiceSoap();
        ArrayOfString aos = null;
        aos = wsSoap.getWeatherbyCityName("西安");
        System.out.println(aos.getString());
    }
}
测试结果

方式二,直接调用 步骤 Step 1.导入依赖
  
    
        org.apache.cxf
        cxf-spring-boot-starter-jaxws
        3.2.5
    
Step 2.测试代码
public class WebServiceTest {
    private static final AriesJcLogger logger = AriesJcLoggerFactory.getLogger(WebServiceTest.class);

    
    public String sendWsdl() {

        logger.info("--------调用webservice接口begin-------");
        // 创建动态客户端
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();

        //对方的wsdl地址
//        Client client = dcf.createClient("http://xx .xxx.xx.xx:9556/xxx/ws/getAlarmWs?wsdl");
//        Client client = dcf.createClient("http://10.195.246.151:8123/SynTime?wsdl");
//        String wsdl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
        String wsdl = "F:\IDEA_Project\练习\exam\weather.wsdl";
        logger.info("wsdl地址:{}", JsonUtil.toJson(wsdl));
        Client client = dcf.createClient(wsdl);
        String json = null;
        try {
            String targetNameSpace = "http://WebXml.com.cn/";
            String methodName = "getWeatherbyCityName";
            logger.info("目的地址:{}",JsonUtil.toJson(targetNameSpace));
            logger.info("方法名称:{}",JsonUtil.toJson(methodName));
            QName qName = new QName(targetNameSpace, methodName);
//            QName qName = new QName("http://tempuri.org/ns.xsd/Service.wsdl", "SynTime");
//            URL wsdlLocation = new URL("http://10.195.246.151:8123");
//            Service service = Service.create(wsdlLocation, qName);
            //Object[] objects1= client.invoke(qName, "aaa","bbb"); //参数1,参数2,参数3......按顺序放就看可以
//            Object[] objects1= client.invoke(qName, ""); //参数1,参数2,参数3......按顺序放就看可以
            logger.info("调用方法:{}",JsonUtil.toJson(qName));
            String cityName ="西安";
            logger.info("参数列表:{}",JsonUtil.toJson(cityName));
            Object[] objects1= client.invoke(qName,cityName); //参数1,参数2,参数3......按顺序放就看可以
            json = JsonUtil.toJson(objects1[0]);
            System.out.println("返回数据:" + json.toString());

        } catch (Exception e) {
            e.printStackTrace();
            logger.info("服务器断开连接,请稍后再试",e);
        }
        logger.info("--------调用webservice接口end-------");
        return json;


    }

    public static void main(String[] args) {
        WebServiceTest wt = new WebServiceTest();
        String s = wt.sendWsdl();
        System.out.println(s);
    }
}

如果遇到如下错误:

需要将方式一中的 weather.wsdl保存到本地,修改wsdl地址为如下:

String wsdl = "F:\IDEA_Project\练习\exam\weather.wsdl";

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5596874.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存