2

既存の WebService (PHP で記述) は、キー、値ストアを として指定しますxsd:struct。Axis はこれを解釈する方法を知らないため、私は個人的に使用するために Wsdl をダウンロードしてパッチを適用するのが好きです。

最後に、生成されたリクエストは次のようになります。

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:emn="interface.foobar">
<soap:Header/>
<soap:Body>
    <emn:searchFoobar>
    <emn:searchParameter>
        <emn:username>xxxx</emn:username>
        <emn:password>xxxx</emn:password>
        <emn:maxHitCount>1</emn:maxHitCount>
        <emn:sorting>distance</emn:sorting>
        <emn:searchtext>example</emn:searchtext>        
    </emn:searchParameter>
    </emn:searchFoobar>
</soap:Body>
</soap:Envelope>

この例でsearchParameterは、 がクライアントで として使用されjava.util.HashMapています。その子は Key および Value エントリです。

こんな感じです:

<emn:hashmapName>
    <key1>value1</key1>
    <key2>value2</key2>
    <key3>value3</key3>
</emn:hashmapName>

完全な WSDL は次のようになります (最後に を に置き換えxsd:structますjava.util.HashMap)。

<?xml version="1.0"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://foobar.service.de/service/v2" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="Soap_Manager" targetNamespace="http://foobar.service.de/service/v2">
    <types>
        <xsd:schema targetNamespace="http://foobar.service.de/service/v2"/>
    </types>
    <portType name="Soap_ManagerPort">
        <operation name="searchFoo">
            <documentation>searchFoo</documentation>
            <input message="tns:searchFooIn"/>
            <output message="tns:searchFooOut"/>
        </operation>
    </portType>
    <binding name="Soap_ManagerBinding" type="tns:Soap_ManagerPort">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="searchFoo">
            <soap:operation soapAction="http://foobar.service.de/service/v2#searchFoo"/>
            <input>
                <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://foobar.service.de/service/v2"/>
            </input>
            <output>
                <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://foobar.service.de/service/v2"/>
            </output>
        </operation>
    </binding>
    <service name="Soap_ManagerService">
        <port name="Soap_ManagerPort" binding="tns:Soap_ManagerBinding">
            <soap:address location="http://foobar.service.de/service/v2"/>
        </port>
    </service>
    <message name="searchFooIn">
        <part name="param" type="xsd:struct"/>
    </message>
    <message name="searchFooOut">
        <part name="return" type="xsd:struct"/>
    </message>
</definitions>

誰かjava.util.HashMapがこの種の使用のために を指定する方法を教えてもらえますか?

4

1 に答える 1

0

ここから apache axisをダウンロードします ダウンロードへのリンク

ダウンロードしたら、解凍するか、インストール手順に従ってください。これには wsdl2java というユーティリティが付属しており、wsdl ファイルを読み込んでそのための Java クラスを構築します。

上記の wsdl を c:\temp\test.wsdl という名前のファイルに保存しました

次に、次のように wsdl2java コマンドを実行しました。

wsdl2java -uri c:\temp\test.wsdl

wsdl からのパッケージ名と、そのサービスを呼び出すために使用できる 2 つの Java クラスを含むソース フォルダーが生成されました。

于 2012-09-18T03:48:45.143 に答える