2016-12-23 36 views
0

私はRubyでSavonの宝石を使ってリクエストをwsdlウェブサービスに投稿しています。問題は、私がリクエストを送信すると、レスポンスがOKであることがわかりますが、リクエストで送信したアイテムが1つ欠けています。開発チームの助けを借りて、Webサービスが私はSavon 2の安定版を使用しているので、要求XMLを見ることができないので、Savonが直接送信します。Ruby - SOAP WSDL - Savon Gem。送信されたリクエストが何らかのデータを送信しないエラー

アイテムは最後のもので、「promotion_rules」です。

@result = @client.call(
     :create_template, message: { 
      :item => [{ 
       'promotion_id'   => 1, 
       'initial_quantity'  => 0, 
       :products => [{ 
        :product => { 
         'id'     => 3, 
         'quantity'    => 1 
        } 
       }], 
       :lists => [{ 
        :list => [ 
         0, 
         1, 
         2 
        ] 
       }], 
       :promotion_rules => [{ 
        :promotion_rule => { 
         'code'  => "NEW_USER", 
         'value'  => 1 
        } 
       }] 
      }] 
     } 
    ) 

私が得る応答は次のとおりです。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.test.enterprise.com"> 
    <SOAP-ENV:Body> 
    <ns1:createTemplateResponse> 
     <item> 
     <response> 
      <code>000</code> 
      <description>Aprobada</description> 
      <ticket>99999999</ticket> 
     </response> 
     <attention> 
      <begin>2016-12-23 10:49:50</begin> 
      <end>2016-12-23 10:49:50</end> 
      <time>0.2</time> 
     </attention> 
     <template_id>901</template_id> 
     </item> 
    </ns1:createTemplateResponse> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

その項目に必要とされる特定のデータは以下の通りです:

​​

事前にありがとうございます。

答えて

1

wsdl-fileがないか、少なくともwsdl-fileの完全な型定義(Itemなど)がないと、ペイロードの正確性を確認できません。

あなたによれば、デバッグ出力の問題:savonのデバッグ出力をチェックしましたか?サボンは、以下の構成を使用して、コンソールにあなたのリクエストとレスポンスのXMLペイロードを印刷することができます。

Rails.logger = Logger.new(STDOUT) 
Rails.logger.level = LOGGER::DEBUG 

、あなたのサボンの設定が

savon_config = { 
    ... 
    log: true, 
    logger: Rails.logger, 
    ... 
} 

を含める必要があります多分これはあなたの要求ペイロードをデバッグするのに役立つでしょうか?

+0

ありがとう要素、それは「要素」でなければなりません!それは私が問題を解決するのを助けました!私はサバンを探してリクエストを表示しました。私はサバンについてしか見つけませんでした3 –

+0

あなたも大歓迎です。 –

0

問題は代わりに、配列の要素が指定された方法で見つかりました:

   'promotion_rules' => [{ 
        'promotion_rule' => { 
         'code'  => "NEW_USER_RULE", 
         'value'  => 1 
        } 
       }] 

の代わりに::

   :promotion_rules => [{ 
        :promotion_rule => { 
         'code'  => "NEW_USER_RULE", 
         'value'  => 1 
        } 
       }] 
関連する問題