Webサービスは、天気サービスを呼び出します

共通サービスします。http://www.webxml.com.cn/zh_cn/support.aspx

行方不明の文書がArrayOfString.javaを使用することができます

パッケージcom.test.wes.weather、

輸入はjava.util.ArrayListの;
 インポートはjava.util.List;
 インポートjavax.xml.bind.annotation.XmlAccessType;
 インポートjavax.xml.bind.annotation.XmlAccessorType;
 輸入javax.xml。 bind.annotation.XmlElement;
 インポートjavax.xml.bind.annotation.XmlType; 


/ ** 
 * <P>がArrayOfString複雑なJavaクラス・タイプ。
 * 
 * <P>以下、所望のコンテンツに指定されたパターンセグメントに含まれています。
 * 
 * <PRE> 
 *&LT; complexTypeの名= "がArrayOfString"> 
 *&LT; complexContentを> 
 *&LT;制限ベース= "{ http://www.w3.org/2001/XMLSchema } anyTypeを">
 *&LT;要素名= "文字列"タイプ= "{ http://www.w3.org/2001/XMLSchema }文字列"のmaxOccurs = "無限"のminOccurs = "0" /> 
 *&LT; /シーケンス> 
 *&LT。 /制限> 
 *&LT; / complexContentを> 
 *&LT; / complexTypeの> 
 * </ PRE> 
 * 
 * 
 * / 
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(名 = "がArrayOfString"、propOrder = {
     "文字列" 
})
パブリック クラスがArrayOfString { 

    @XmlElement(NULLに = 真の保護リストの<string> 文字列を、

    / **
     *文字列プロパティの値を取得します。
     * 
     * <P> 
     *このアクセサメソッドは、ライブリストへの参照、返す
     *ないスナップショットを。そのためにあなたが作る任意の修正
     *返されたリストは、JAXBオブジェクトの内部に存在することになります。
     * <CODE>設定</ CODE>文字列プロパティのための方法がない理由です。
     * 
     * <P> 
     *たとえば、新しいアイテムを追加するには、次のように行う:
     * <PRE> 
     *のgetString()(newItem)を追加し、。
     * </ PRE> 
     * 
     * 
     * <P>
     * 
     * 
     * / 
    パブリックリストの<string> のgetString(){
         場合(文字列== NULL ){  = 新規のArrayList <ストリング> (); 
        } 
        戻り 、この.stringと、
    } 

}
コードの表示

wsimportの使用状況

用法:wsimportの[オプション] < WSDL_URI > 

\請求[オプション]前記
  -b < パス>                  JAXWS / JAXBバインディングファイルを指定またはモード追加
                            (それぞれ< パス> 独自-bを有していなければならない)
  -B < jaxbOption >             JAXBスキーマコンパイラにこのオプションを渡す
  -catalog < ファイルは>            外部実体参照のカタログファイルを解決するために、指定
                            支援TR9401、XCatalogおよびOASIS XMLカタログ形式を。
  -d < ディレクトリ>             生成される出力ファイルの配置場所を指定
  -encoding < エンコーディングを>      使用するソースファイルの文字エンコーディングを指定して
  、標準に従っていない-ベンダー拡張を許可-Extension 
                            指定された機能を。使用を拡張することができ
                            、アプリケーションが移植できない原因や
                            他の実装と相互運用することはできません
  -help表示ヘルプ
  -httpproxy:< ホスト>< ポート>   HTTPプロキシサーバ(デフォルトポート8080)を指定
  -keep予約はファイルを生成し
  -p < PKG >                   パッケージターゲット
  -quiet wsimportの隠された出力
  -sを< ディレクトリ>は、            ソースファイルの配置の場所が発生した指定
  -target < バージョン>         JAXWSはコード生成所与の仕様のバージョンに応じて
                            2.2にデフォルト値を、2.0は、2.1と2.2許容される
                            、例えば、2.0 JAXWS 2.0仕様は、互換性のあるコードを生成する
  コンパイラの出力メッセージに何をすべきかについての-verbose 
  -version出力バージョンを情報
  -wsdllocation < LOCATION >   @ WebServiceClient.wsdlLocation値
  -clientJar < jarファイル>       アーティファクトは、jarファイルを生成し、作成し
                            たWebサービスのWSDLメタデータを呼び出すために必要な。
  JWS実装ファイルの生成スタブ-generateJWS 
  -implDestDir < ディレクトリ>は、  生成されたJWS実装ファイルの場所を指定し
  -implServiceName < >   サービス名JWS実装のローカル部分を生成
  -implPortName < 名前>       JWS実装の局所部分の生成されたポート名

\拡張子:
  -XadditionalHeadersマッピングヘッダが要求または応答メッセージに結合していないが、に結合されていない
                                   Javaメソッドパラメータ
  -Xauthfile次の形式に認証情報のファイル:
                                   HTTP:// usernameは:? [email protected]/stock WSDL 
  情報デバッグ-Xdebug出力
  -Xnoアドレッシング-データバインディングは、JavaへのW3C EndpointReferenceTypeが結合を可能に
  コンパイルされていない-XnocompileをJavaファイル
  -XdisableAuthenticator WS RI-JAXが使用する無効検証手順、 
                                   検証 
                                   -Xauthfileオプションを無視する(設定している場合)
  WSDLを抽出する際にSSLホスト名を無効-XdisableSSLHostnameVerification

\示例:
  wsimportのstock.wsdl -b stock.xml -b stock.xjb 
  wsimportの-d生成http://example.org/stock?wsdl

 


 

通常の使用方法

wsimportの-encoding UTF-8 -p com.test.wes.weather -s。http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

しかし

WeatherWS.asmxダウンファイルを最初にダウンロードしてください

 そして、WeatherWS.asmxで

 <S:要素REF = "S:スキーマ" /> <S:任意/>全部替换为<S:任意のminOccurs = "2" のmaxOccurs = "2" />


 

wsimportの-encoding UTF-8 -p com.test.wes.weather -s。WeatherWS.asmx

 

上記の文を実行すると、以下のコードが生成されます

 

 

 


package com.test.wec;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import com.test.wes.phone.MobileCodeWSSoap;
import com.test.wes.weather.ArrayOfString;
import com.test.wes.weather.WeatherWS;
import com.test.wes.weather.WeatherWSSoap;
 
 

public class ServiceClient {
 
    public static void main(String[] args) throws IOException {
        //创建WSDL的URL,注意不是服务地址
//        URL url = new URL("http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl");
//        
//        //创建服务名称
//        //1.namespaceURI - 命名空间地址
//        //2.localPart - 服务视图名
//        QName qname = new QName("http://WebXml.com.cn/", "qqOnlineWebService");
//        
//        //创建服务视图
//        //参数解释:
//        //1.wsdlDocumentLocation - wsdl地址
//        //2.serviceName - 服务名称
//        Service service = Service.create(url, qname);
//        //获取服务实现类
////        QqOnlineWebServiceSoap qqonlineSsSoap =service.getPort(QqOnlineWebServiceSoap.class);
////        //调用查询方法
////        String result = qqonlineSsSoap.qqCheckOnline("1565465");
////        System.out.println(result);
        
        WeatherWS factory = new WeatherWS();
        //根据工厂创建一个WeatherWSSoap对象
        WeatherWSSoap weatherWSSoap = factory.getWeatherWSSoap();
        //调用WebService提供的getWeather方法获取南宁市的天气预报情况
        ArrayOfString weatherInfo = weatherWSSoap.getSupportCityString("广东");
        List<String> lstWeatherInfo = weatherInfo.getString();
        //遍历天气预报信息
        for (String s : lstWeatherInfo) {
            System.out.print(s+"|");
        }
        System.out.println();
        
        ArrayOfString weatherInfo1 = weatherWSSoap.getWeather("广州", "");
        List<String> lstWeatherInfo1 = weatherInfo1.getString();
        //遍历天气预报信息
        for (String s : lstWeatherInfo1) {
            System.out.print(s+"|");
        }
        System.out.println();
        
    }
}

 

おすすめ

転載: www.cnblogs.com/tk55/p/11298435.html