小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 破萬(wàn)卷閣 2015-06-24
    

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

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

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

 

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

 

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

 

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

 

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

 

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

這種調(diào)用方式的好處就是簡(jiǎn)單(開發(fā)簡(jiǎn)單,調(diào)用簡(jiǎn)單,只要service提供方不改動(dòng)對(duì)外的方法接口,客戶端都無(wú)需有代碼帶動(dòng)),無(wú)需對(duì)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。

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

 

調(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)目,不過(guò)如今已經(jīng)被axis取代了,后者重新進(jìn)行了架構(gòu)設(shè)計(jì),功能更齊全。

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

 

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多