0

httpbuilder を使用して SOAP リクエストを作成しようとしています。head セクションでいくつかの認証パラメーターを渡す必要があります。

私のコードは次のとおりです

def String WSDL_URL = 'http://ws.tradetracker.com/soap/affiliate?wsdl'
    def http = new HTTPBuilder( WSDL_URL , ContentType.TEXT )
    String soapEnvelope =
              """<?xml version="1.0" encoding="utf-8"?>
    <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                     xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
     <soap-env:Header>
              <authenticate>

              <customerID>id</customerID>
              <passphrase>pass</passphrase>
              <demo>true</demo>
              </authenticate>

    </soap-env:Header>
      <soap12:Body>
        <getConversionTransactions xmlns="xmlns':'http://schemas.xmlsoap.org/wsdl">
          <affiliateSiteID>id</affiliateSiteID>


        </getConversionTransactions>
      </soap12:Body>
    </soap12:Envelope>"""
            http.request( Method.POST, ContentType.TEXT ) {
                 body = soapEnvelope

                response.success = { resp, xml ->
                    String xm = xml.readLines()
                    println "XML was ${xm}"

                    def territories = new XmlSlurper().parseText(
                        '<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="urn:http://ws.webgains.com/aws.php" xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:getFullUpdatedEarningsResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return enc:itemType="ns1:fullLinesArray" enc:arraySize="1" xsi:type="ns1:fullReportArray"><item xsi:type="ns1:fullLinesArray"><transactionID xsi:type="xsd:int">39367137</transactionID><affiliateID xsi:type="xsd:int">59987</affiliateID><campaignName xsi:type="xsd:string">www.tikcode.com</campaignName><campaignID xsi:type="xsd:int">136755</campaignID><date xsi:type="xsd:dateTime">2013-05-13T15:04:48</date><validationDate xsi:type="xsd:dateTime">2013-05-13T15:04:48</validationDate><delayedUntilDate xsi:type="xsd:string"></delayedUntilDate><programName xsi:type="xsd:string">Miniinthebox - US</programName><programID xsi:type="xsd:int">4611</programID><linkID xsi:type="xsd:string">95661</linkID><eventID xsi:type="xsd:int">7285</eventID><commission xsi:type="xsd:float">0.06</commission><saleValue xsi:type="xsd:float">0.8</saleValue><status xsi:type="xsd:string">confirmed</status><paymentStatus xsi:type="xsd:string">notcleared</paymentStatus><changeReason xsi:nil="true"/><clickRef xsi:nil="true"/><clickthroughTime xsi:type="xsd:dateTime">2013-05-13T14:58:33</clickthroughTime><landingPage xsi:type="xsd:string">http%3A%2F%2Fwww.lightinthebox.com%2Fes%2F%3Flitb_from%3Daffiliate_webgains</landingPage><country xsi:type="xsd:string">ES</country><referrer xsi:type="xsd:string">http%3A%2F%2Flocalhost%3A8080%2Fcom.publidirecta.widget%2Fpromocion%2FverPromocion%3Fpromocion%3D</referrer></item></return></ns1:getFullUpdatedEarningsResponse></env:Body></env:Envelope>').declareNamespace("ns1":"http://ws.webgains.com/aws.php")

                 println "aaaaaaaaaaaaaaaa"+ territories.Body.getFullUpdatedEarningsResponse.return.item.transactionID
                }

                response.failure = { resp, xml ->
                    println "pues peto, no se porque"+xml.readLines()
                }
            }

次のエラーが表示されますが、間違っている手がかりはありません

<?xml version="1.0" encoding="UTF-8"?>, <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>Body must be present in a SOAP envelope</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
4

2 に答える 2

1

Envelope とそれに対応する Header 要素の名前空間が一致しません。

<soap12:Envelope><soap12:Header>代わりに持っている必要があります<soap-env:Header>。ヘッダー要素でペイロードが無効になるため、本文に到達できなくなります。

于 2013-05-28T13:37:11.677 に答える