• WebService与RESTful WebService


    Manual Instruction Document

     

    Web Service

    JAX-WS & JAX-RS

     

     

     

    Author: Liu Xiang

    Date: 2018/01/12


     

    1. Summary....................................................................................................................... 1

    2. JAX-WS.......................................................................................................................... 1

    2.1 The common interface..................................................................................... 1

    2.2 The functions.................................................................................................. 1

    2.3 To call common JAX-WS.................................................................................... 4

    2.4 To call private JAX-WS which released by ourself................................................. 7

    2.5 Other common JAX-WS.................................................................................. 10

    3. JAX-RS......................................................................................................................... 12

    3.1 The common interface................................................................................... 12

    3.2 The functions................................................................................................ 12

    3.3 To call common JAX-RS................................................................................... 15

    3.4 To call private JAX-RS which released by ourself................................................. 18

    3.5 Other common JAX-RS................................................................................... 18

     


    1. Summary

    There are twotypes of Web Service.

    JAX-WS, java apifor xml-based webservice.

    JAX-RS, java apifor RESTful webservice.

    2. JAX-WS

    2.1 Thecommon interface

    Jar name

    WsClient.jar

    Interface

    package com.cn;

     

    publicinterface WsClient {

    public String getResult(StringapplyKey, Stringtype, String...message);

    }

    Parameters

    Type

    Name

    Description

    String

    applyKey

    User's Key, user's verification

    String

    type

    The provided Web Service type name

    String...

    message

    The input parameters

     

     

    Return

    Type

    Description

    String

    The Web Service calling result

    2.2The functions

    2.2.1 Validations

    2.2.1.2 CheckapplyKey

    ToDo

    2.2.1.2 Checktype

    Check resource/resource.properties which key = support.type to verify if theincoming type is support or not.

    2.2.2 Prepare Web ServiceRequest

    Use the SOAP 1.2 templates in "/com/cn/resource/request/template/"to prepare the request message.

     

    For example:

    2.2.3 Get Web Service Response

    To call the related WSDL(Web Services DescriptionLanguage) URL, get the response.

     

    For example:

    2.2.4 Parse the response

    Use the related key word to get result node.

     

    For example:

    2.3 Tocall common JAX-WS

    2.3.1 Validations

    Pass.

    2.3.2 To call the interface

    Use below code to call 2.1 common method, to get"苏州"weather.

     

         WsClientwsClient =new WsClientImpl();

         System.out.println(wsClient.getResult("","weather","苏州",""));

    2.3.3 Send the request SOAP 1.2request

    <?xmlversion="1.0"encoding="utf-8"?>

    <soap12:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

     <soap12:Body>

       <getWeatherxmlns="http://WebXml.com.cn/">

         <theCityCode>苏州</theCityCode>

         <theUserID></theUserID>

       </getWeather>

     </soap12:Body>

    </soap12:Envelope>

    2.3.4 Get the response

    <?xmlversion="1.0"encoding="utf-8"?>

    <soap:Envelopexmlns:soap="http://www.w3.org/2003/05/soap-envelope"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">

     <soap:Body>

       <getWeatherResponsexmlns="http://WebXml.com.cn/">

         <getWeatherResult>

            <string>江苏苏州</string>

            <string>苏州</string>

            <string>2004</string>

            <string>2018/01/1210:26:03</string>

            <string>今日天气实况:气温:0;风向/风力:北风 2级;湿度:31%</string>

            <string>紫外线强度:中等。空气质量:中。</string>

            <string>紫外线指数:中等,涂擦SPF大于15PA+防晒护肤品。健臻·血糖指数:易波动,血糖易波动,注意监测。感冒指数:较易发,天凉温差大,适当增减衣服。穿衣指数:冷,建议着棉衣加羊毛衫等冬季服装。洗车指数:较适宜,无雨且风力较小,易保持清洁度。空气污染指数:中,易感人群应适当减少室外活动。</string>

            <string>112</string>

            <string>-3/5</string>

            <string>西北风转东南风小于3</string>

            <string>0.gif</string>

            <string>0.gif</string>

            <string>113晴转多云</string>

            <string>-1/7</string>

            <string>东南风3-4</string>

            <string>0.gif</string>

            <string>1.gif</string>

            <string>114多云</string>

            <string>3/11</string>

            <string>东南风3-4</string>

            <string>1.gif</string>

            <string>1.gif</string>

            <string>115</string>

            <string>9/15</string>

            <string>东南风3-4</string>

            <string>2.gif</string>

            <string>2.gif</string>

            <string>116小雨</string>

            <string>7/16</string>

            <string>西北风3-4</string>

            <string>7.gif</string>

            <string>7.gif</string>

         </getWeatherResult>

       </getWeatherResponse>

     </soap:Body>

    </soap:Envelope>

    2.3.5 Parse the response

    江苏苏州

            苏州

            2004

            2018/01/12 10:26:03

            今日天气实况:气温:0;风向/风力:北风 2级;湿度:31%

            紫外线强度:中等。空气质量:中。

            紫外线指数:中等,涂擦SPF大于15PA+防晒护肤品。健臻·血糖指数:易波动,血糖易波动,注意监测。感冒指数:较易发,天凉温差大,适当增减衣服。穿衣指数:冷,建议着棉衣加羊毛衫等冬季服装。洗车指数:较适宜,无雨且风力较小,易保持清洁度。空气污染指数:中,易感人群应适当减少室外活动。

            112

            -3/5

            西北风转东南风小于3

            0.gif

            0.gif

            113晴转多云

            -1/7

            东南风3-4

            0.gif

            1.gif

            114多云

            3/11

            东南风3-4

            1.gif

            1.gif

            115

            9/15

            东南风3-4

            2.gif

            2.gif

            116小雨

            7/16

            西北风3-4

            7.gif

            7.gif

    2.4 Tocall private JAX-WS which released by ourself

    2.4.1 Validations

    Pass.

    2.4.2 Release private JAX-WS

    2.4.2.1 New project HelloFriend

     1. New java projectHelloFriend, New class MyService.java

    package service;

     

    publicclass MyService {

       public String getGreeting(Stringname)

       {

            return"您好 "+name;

       }

    }

     

    2. New META-INF folder and services.xml

     

    services.xml

    Service name is "myService", useRPC method

    <servicename="myService">

       <description>

            WebService例子

       </description>

       <parametername="ServiceClass">

            service.MyService

       </parameter>

     

       <operationname="getGreeting">

           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

       </operation>

    </service>

     

    3. Export the project to jar

          jar cvf ws.aar .

    2.4.2.2 Use axis2 to releaseit to tomcat

    1. Move 2.4.1.1 step 3 jar apache-tomcat-9.0.2webappsaxis2WEB-INFservices

     

    2. Startup tomcat

    3. Visit the private wsdl

     

    2.4.3 To call the interface

            WsClientwsClient =new WsClientImpl();

             System.out.println(wsClient.getResult("","myservice","刘大人"));

    2.4.4 Send the request SOAP 1.2request

    <?xmlversion="1.0"encoding="utf-8"?>

    <soap12:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

     <soap12:Body>

       <getGreetingxmlns="http://service">

        <name>刘大人</name>

       </getGreeting>

     </soap12:Body>

    </soap12:Envelope>

    2.4.5 Get the response

    <?xmlversion="1.0"encoding="utf-8"?>

    <soapenv:Envelopexmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">

     <soapenv:Header/>

     <soapenv:Body>

       <ns:getGreetingResponsexmlns:ns="http://service">

         <ns:return>您好刘大人</ns:return>

       </ns:getGreetingResponse>

     </soapenv:Body>

    </soapenv:Envelope>

    2.4.6 Parse the response

    您好刘大人

     

    2.5 Othercommon JAX-WS

    2.5.1 Attribution of mobilephones

            WsClientwsClient =new WsClientImpl();

             wsClient.getResult("","mobile","18662638888","");

                      ==>

            18662638888:江苏苏州江苏联通GSM

    2.5.2 Flight inquiries

                      WsClientwsClient =new WsClientImpl();

             wsClient.getResult("","airline","上海","北京","2018-01-12","");

                      ==>

     

     2.5.3 Chinese/Englishtranslations

            WsClientwsClient =new WsClientImpl();

             wsClient.getResult("","englishswpchinese","airline","");

                      ==>

    airline

                 'e?lain

                 

                 adj. (飞机)航线的;n. (飞机的)航线,航空公司

                 65562.mp3

               

                 However short the journey is, you always get something to eat on thisairline.

                 不管航程多麽短,这一班机上都有些吃的.           

               

                 That was the worst airline disaster in history.

                 那是历史上最严重的空难。           

               

                 The timetable is obtainable post-free from the airline office.

                 航班时刻表可以向航空公司免费索取。

     

     

            WsClientwsClient =new WsClientImpl();

             wsClient.getResult("","englishswpchinese","苏州","");

                      ==>

                                苏州        

                 Suzhou (city)   

                 soochow pladj.

                 Suchou

                 Soochow

               

                 对不起,打扰了,请问坐火车去苏州该乘什么车?

                 Excuse me, how can I go to suzhou by train?           

               

                 一个孕妇把他从苏州河救了起来。

                 A pregnant lady rescued him from the Suzhou River.           

               

                 这是从这里去苏州的直达列车吗?

                 Be this a through carriage for Suzhou from here?

    3. JAX-RS

    3.1The common interface

    Jar name

    RsClient.jar

    Interface

    package com.cn;

     

    import java.util.Map;

     

    public interface RsClient {

          public <K, V> String getResult(String applyKey, String httpType, String type, Map<K,V>  parameters, String... message);

    }

    Parameters

    Type

    Name

    Description

    String

    applyKey

    User's Key, user's verification

    String

    httpType

    Http calling type, GET/POST/PUT/DELETE

    String

    type

    The provided Web Service type name

    Map<K,V>

    parameters

    httpType is POST, the related parameters

    String…

    message

    The input parameters

     

     

    Return

    Type

    Description

    String

    The RESTful Web Service calling result

    3.2The functions

    3.2.1 Validations

    3.2.1.2 CheckapplyKey

    ToDo

    3.2.1.2 Checktype

    Check resource/resource.properties which key = support.type to verify if theincoming type is support or not.

    3.2.1.3 Check HTTPtype

    Only support GET/POST/PUT/DELETE now.

    3.2.2 Prepare RESTful WebService URL

    Use the configured method and path to getthe correct URL.

     

    For example

    3.2.3 Get RESTful Web ServiceResponse

    To call the related URL, get the response.

     

    For example

     

    3.2.4 Parse the response

    Use the configured result key word to parseand format the result.

     

    For example

     

    3.3 Tocall common JAX-RS

    3.3.1 Validations

           Pass.

    3.3.2 Prepare RESTful WebService URL

    Use the configured method and path to getthe correct URL.

     

    For example

     

    1. Get the base context path http://www.weather.com.cn/data/sk/

    2. Use the method to get the pathInfogetWeatherPathInfo

     

    Get city code 101190401 for苏州

    3. If no "weather.path.info.method",use "weather.path.info.url" directly;

    4.Get pathInfo suffix.

    5. Get the final URL: http://www.weather.com.cn/data/sk/101190401.html

     

    3.3.3 Get RESTful Web ServiceResponse

    To call the related URL, get the response.

     

    For example

    {

        "weatherinfo":{

            "city":"苏州",

           "cityid":"101190401",

            "temp":"17",

            "WD":"东南风",

            "WS":"2",

            "SD":"44%",

            "WSE":"2",

            "time":"17:05",

            "isRadar":"0",

            "Radar":"",

            "njd":"暂无实况",

            "qy":"1017",

            "rain":"0"

        }

    }

    3.3.4 Parse the response

    城市:苏州

    温度:17

    风向:东南风

    风速:2

    湿度:44%

    发布时间:17:05

     

    3.4 Tocall private JAX-RS which released by ourself

             TODO.

     

     

     

    3.5 Othercommon JAX-RS

    3.5.1 PM 2.5

            RsClientImplrsClient =new RsClientImpl();

             rsClient.getResult("","GET","pm2.5",null,"苏州");

                       ==>

    3.5.2 O3

            RsClientImplrsClient =new RsClientImpl();

             rsClient.getResult("","GET","o3",null,"苏州");

                       ==>

     

     

     代码链接


     

     

     

     

     

     

     

     

     

     

     


    博客地址:https://blog.csdn.net/xiang__liu,https://www.cnblogs.com/xiang--liu/
  • 相关阅读:
    内网/局域网 DNS获取不正确
    Qt5.7 + D2D渲染引擎。 画面闪烁,几乎没图像显示
    安网路由器 移动宽带和电信宽带混用问题解决
    安网路由器 静态IP和PPOE混用时,如果设置了路由器定时重启可能导致路由器罢工
    Qt5.7+VS2015环境下使用QtCreator编译QtAV视频库
    Android Gradle编译so库或运行时出现 text relocations 崩溃的正确解决方法
    使用Jenkins + shell(gradle)快速搭建 Android 构建机
    Android 获得控件在屏幕中的坐标
    Mac 共享WiFi给任意设备(Android,Iphone等等)
    股票、外汇、期货、数字货币小总结
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/9710396.html
Copyright © 2020-2023  润新知