0

私はできる限り深く掘り下げましたが、問題の解決策を見つけることができませんでした:

SOAP リクエストを ExactTarget API に送信したいと考えています。Savon を使用しようとしていますが、作成されるリクエストは ExactTarget の API (以前は Java を使用していました) で動作するものとは異なり、最終的に Ruby スクリプトを実行するとエラーが発生します。

以下は、Ruby で作成する作業リクエストの本文です。

<S:Body>
    <RetrieveRequestMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
        <RetrieveRequest>
            <ObjectType>BounceEvent</ObjectType>
            <Properties>SendID</Properties>
            <Properties>SubscriberKey</Properties>
            <Properties>EventDate</Properties>
            <Properties>SMTPCode</Properties>
            <Properties>BounceCategory</Properties>
            <Properties>SMTPReason</Properties>
            <Properties>BounceType</Properties>
            <Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="SimpleFilterPart">
                <Property>SendID</Property>
                <SimpleOperator>equals</SimpleOperator>
                <Value>421939</Value>
            </Filter>
        </RetrieveRequest>
</RetrieveRequestMsg>
</S:Body>

Rubyで作成したコードは次のとおりです。

client = Savon.client do
  wsdl 'https://webservice.s4.exacttarget.com/etframework.wsdl'  
  wsse_auth("user", "pass")
end

builder = Builder::XmlMarkup.new
builder.instruct!(:xml, encoding: "UTF-8")

#builder.RetrieveRequestMsg('xmlns'=>'http://exacttarget.com/wsdl/partnerAPI') do
  builder.RetrieveRequest do
    builder.ObjectType "BounceEvent"
    builder.Properties "SendID"
    builder.Properties "SubscriberKey"
  end
#end

theBody = builder.target!
theBody.slice! '<?xml version="1.0" encoding="UTF-8"?>'

client.call(:retrieve, message: theBody)

..そして、結果のリクエスト本文は次のとおりです。

<env:Body>
    <tns:RetrieveRequestMsg>
        <RetrieveRequest>
            <ObjectType>BounceEvent</ObjectType>
            <Properties>SendID</Properties>
            <Properties>SubscriberKey</Properties>
        </RetrieveRequest></tns:RetrieveRequestMsg>
    </env:Body>    

...そして、ここに私が得る結果のエラーがあります:

<soap:Body>
    <RetrieveResponseMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
        <OverallStatus>Error</OverallStatus>
        <RequestID>5ce5cfae-85b4-4e76-b9dd-299e9a9ca871</RequestID>
    </RetrieveResponseMsg>
</soap:Body>

どんな助けでも大歓迎です!

4

1 に答える 1

0

を使用するのではなく、sメソッドを使用して SOAP 要求を生成してBuilderみてください。Savoncall

ruby response = client.call(:authenticate, message: { username: "luke", password: "secret" })

wsdl があるので、メソッド名と引数を判別できるはずです。クライアントで呼び出す.operationsと、生成できる利用可能なすべての操作が一覧表示されます。

于 2013-10-31T01:46:41.887 に答える