乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Java調(diào)用webservice接口方法

       破萬卷閣 2015-06-24
          

      1. Java調(diào)用webservice接口方法

      webservice的 發(fā)布一般都是使用WSDL(web service descriptive language)文件的樣式來發(fā)布的,在WSDL文件里面,包含這個webservice暴露在外面可供使用的接口。

      我們也可以在以下網(wǎng)站找到許多 webservice provider列表, 你可以使用下面的URL來測試你的webservice程序。

       

      http://www./ws/default.aspx

       

      這上面列出了70多個包括很多方面的free webservice provider,utilities->global weather就可以獲取全球的天氣預(yù)報(bào)。

       

      下面我們來看Java如何通過WSDL文件來調(diào)用這些web service(以 COPS WebSSO為例)

       

      1.1 [Apache提供]直接通過AXIS調(diào)用遠(yuǎn)程的web service

       

      我認(rèn)為這種調(diào)用方式適合比較那種返回比較簡單的數(shù)據(jù)的service, 比如,天氣預(yù)報(bào),這些內(nèi)容肯定可以通過一個很簡單的xml來返回。還有就是WebSSO,返回的就是一個字符串。

      這種調(diào)用方式的好處就是簡單(開發(fā)簡單,調(diào)用簡單,只要service提供方不改動對外的方法接口,客戶端都無需有代碼帶動),無需對web service有太深了解,只要按照套路去掉用就可以了。

       

      直接調(diào)用模式如下:

       

      <<LogonClientWithURL.java>>

       

      package ws.client;

       

      import org.apache.axis.client.Call;

      import org.apache.axis.client.Service;

       

       

      public class LogonClientWithURL {

        public static void main(String args[]) throws Exception {

              try {

                        String urlname = "http://192.168.194.23:9080/Logon/services/Logon?wsdl" ;

                        urlname = "http://192.168.194.23:9080/Logon/services/Logon";

                         

                        Service s = new  Service();

                        Call call = (Call) s.createCall();

                        call.setTimeout(new Integer(5000));

                        call.setOperation( "getSecurityToken" );

                        call.setTargetEndpointAddress(urlname);

                           

                        Object[] fn01 = { "john" , "john" , null ,null };

                        String val = (String)call.invoke(fn01);

                        System.out .println( "getSecurityToken(correct):"  + val);

                         

                        Object[] fn02 = { "john" , "john2" , null ,null };

                        String va2 = (String)call.invoke(fn02);

                        System.out .println( "getSecurityToken(wrong):"  + va2);

                 

              } catch (Exception e) {

                    //java.io.InterruptedIOException: Read timed out

                    System.out.println(e.getMessage());

              }

       

        }

      }

       

      1.2 [Apache提供]使用WSDL2Java把WSDL文件轉(zhuǎn)成本地類,然后像本地類一樣使用。

      這種方式應(yīng)該可以調(diào)用所有的webService。

      同時這個調(diào)用方式適合那種業(yè)務(wù)比較復(fù)雜的Service (特別是企業(yè)應(yīng)用, 不是外部所有人都能無限制訪問那種Service),比如,這個Service返回的xml內(nèi)容比較復(fù)雜,同時多個客戶端系統(tǒng)都需要訪問這個Service,在這種情況,service提供方可能會考慮返回一個java類。畢竟,每個客戶端都要解析xml也夠麻煩的,還不如讓service提供方返回一個類。

       

      調(diào)用模式如下:

      1)使用WSDL2Java把WSDL文件轉(zhuǎn)成本地類。 我這里寫了bat文件:

      <<WSDL2JAVA.bat>>

      set Axis_Lib=.\lib

      set Java_Cmd=D:\Dev\JDK\jdk1.4.2_12\bin\java -Djava.ext.dirs=%Axis_Lib%

      set Output_Path=.\src

      set Package=com.ubs.ws

      %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% http:\\192.168.194.23:9080\Logon\services\Logon\wsdl\Logon.wsdl

      Pause

       

      運(yùn)行直接生成以下java類

      Logon.java

      LogonService.java

      LogonServiceLocator.java

      LogonSoapBindingStub.java

       

      2) <<LogonClientWithStub.java>>

      package test.cis.client;

       

      import test.cis.*;

       

      public class LogonClientWithStub {

       

            public static void main(String[] args) {

                  try {

       

                        Logon locator = new LogonServiceLocator().getLogon();

                        String result = locator.getSecurityToken("john" , "john" ,null , null );

       

                        System.out.println("getSecurityToken(correct): " + result);

                       

                       

                        result = locator.getSecurityToken("john" , "john2" ,null , null );

       

                        System.out.println("getSecurityToken(wrong): " + result);

                       

                  } catch (Exception e) {

                        // TODO Auto-generated catch block

                        e.printStackTrace();

                  }                      

                 

            }

       

      }

       

      1.3 [Apache提供]直接SOAP調(diào)用遠(yuǎn)程的webservice

      apache的soap項(xiàng)目,不過如今已經(jīng)被axis取代了,后者重新進(jìn)行了架構(gòu)設(shè)計(jì),功能更齊全。

      前者已停止開發(fā)。所以建議用axis。也就是1.1 & 1.3

       

      1.4 [XFire提供] 使用XFire調(diào)用WebService

      有興趣的可以下載XFire的jar來學(xué)習(xí)一下。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多