1

SOAPUI で SOAP API を使用しようとしています。WSDL で記述された「取得」操作は次のようになります。

 <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:MarketingCenter" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:Get soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
             <Authentication xsi:type="urn:Authentication">
                <!--You may enter the following 6 items in any order-->
                <Username xsi:type="xsd:string">myUserName</Username>
                <Password xsi:type="xsd:string">mypassword</Password>
                <CustomerId xsi:type="xsd:int">29833</CustomerId>
                <Level xsi:type="xsd:int">0</Level>
                <Source xsi:type="xsd:string">?</Source>
                <Options xsi:type="xsd:int">0</Options>
             </Authentication>
             <Method xsi:type="xsd:string">keyword.list</Method>
             <Arguments xsi:type="urn:ArrayOfKeyValuePairs" soapenc:arrayType="urn:KeyValuePair[]"/>
          </urn:Get>
       </soapenv:Body>
    </soapenv:Envelope>

しかし、この操作を実行すると、次のエラーが発生します。

    <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns4="urn:MarketingCenter">
   <SOAP-ENV:Body>
      <ns4:GetResponse>
         <return xsi:type="ns4:GetResponseData">
            <Data xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:anyType[0]" xsi:nil="true"/>
            <Status>
               <ErrorCode xsi:type="xsd:int">1</ErrorCode>
               <ErrorString xsi:type="xsd:string">One or more of the arguments were invalid</ErrorString>
               <ErrorDetails xsi:type="xsd:string">One or more of the arguments were invalid</ErrorDetails>
            </Status>
         </return>
      </ns4:GetResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

引数のリスト、またはこのリストをフォーマットする方法を除いて、どこにすべきかわかりません。彼らが引数の配列を必要としていることは理解していますが、この配列をどこに配置すればよいでしょうか? 他の値を入力するはずだったところに「?」があったので、この引数の配列をどこに入力すればよいかわかりません。

4

1 に答える 1

2

ここに実際の値を入力することを期待しています:

<Authentication xsi:type="urn:Authentication">
    <!--You may enter the following 6 items in any order-->
    <Username xsi:type="xsd:string">myUserName</Username>
    <Password xsi:type="xsd:string">mypassword</Password>
    <CustomerId xsi:type="xsd:int">29833</CustomerId>
    <Level xsi:type="xsd:int">0</Level>
    <Source xsi:type="xsd:string">?</Source>
    <Options xsi:type="xsd:int">0</Options>
</Authentication>

引数のリストはUsernamePasswordCustomerId、 などです。 の代わりにmyUserNamemypasswordサービスが期待するものを入れます。

の限り:

<Arguments xsi:type="urn:ArrayOfKeyValuePairs" soapenc:arrayType="urn:KeyValuePair[]"/>

それはおそらく次のようになります。

<urn:Get>
    ...
    <Arguments xsi:type="urn:ArrayOfKeyValuePairs" soapenc:arrayType="urn:KeyValuePair[5]">
        <KeyValuePair>
            <Key xsi:type="xsd:string">foo</Key>
            <Value xsi:type="xsd:string">bar</Value>
        </KeyValuePair>
        <KeyValuePair>...</KeyValuePair>
        <KeyValuePair>...</KeyValuePair>
        <KeyValuePair>...</KeyValuePair>
        <KeyValuePair>...</KeyValuePair>
    </Arguments>
</urn:Get>

の内容は、そのタイプがサービスによってどのように定義されているかによって異なります (<Key>要素と<Value>WSDL に従った要素のみ)。角括弧 ( ) 内の数字が要素[5]の数と一致していることを確認してください。<KeyValuePair>

于 2012-07-27T15:40:29.793 に答える