0

開発チームから次のコードを受け取りました。

curl -u EMAILADDRESS:PASSWORD -d "sender=NAME <EMAILADDRESS>&message=[Invite Link]&collector=COLLECTOR&subject=Test Invite&footer=My Custom Text [Unsubscription Link]"

上記で問題ないとのことでした。これは、httpartygemを使用して Ruby 1.9.3 に変換したものです。

call= "/api/v2/emails/?survey=#{i}"    
puts collector_final_id
url= HTTParty.post("https://www.fluidsurveys.com#{call}",
  :basic_auth => auth,
  :headers => { 'Content-Type' => 'application/x-www-form-urlencoded','Accept' => 'application/x-www-form-urlencoded' },
  :collector => collector,
  :body => {
    "subject" => "Test Invite",
    "sender" => "NAME <EMAILADDRESS>",
    "message" => "[Invite Link]"
  },
  :footer => "My Custom Text [Unsubscription Link]"
)

:footerパラメータとパラメータを除いて、この中のすべてが正常に機能し:collectorます。それらをまったく認識していないようです。

エラーはスローされません。送信している実際の電子メールには含まれていません。これらの 2 つのパラメーターを渡すときに何が間違っていますか?

4

2 に答える 2

0

あなたの:collector:footerは正しくありません。

パラメータを指定して POST リクエストを受信するための小さな Sinatra サービスを作成しました。

require 'pp'
require 'sinatra'

post "/*" do
  pp params
end

そしてそれを実行し、Mac OS ラップトップで Web サーバーを起動しました。Sinatra アプリと同様に、0.0.0.0:4567 にあります。

このコードの実行:

require 'httparty'

url = HTTParty.post(
  "http://localhost:4567/api/v2/emails?survey=1",
  :headers => {
    'Content-Type' => 'application/x-www-form-urlencoded',
    'Accept' => 'application/x-www-form-urlencoded'
  },
  :body => {
    "subject" => 'subject',
    "sender" => 'sender',
    "message" => 'message',
  },
  :collector => 'collector',
  :footer => 'footer'
)

puts url

出力:

["survey", "1"]["subject", "subject"]["sender", "sender"]["message", "message"]["splat", ["api/v2/emails"]]["captures", ["api/v2/emails"]]

シナトラは次のように述べています。

127.0.0.1 - - [2013 年 9 月 11 日 17:58:47] "POST /api/v2/emails?survey=1 HTTP/1.1" 200 - 0.0163
{"調査"=>"1",
 "件名"=>"件名",
 "送信者"=>"送信者",
 "メッセージ"=>"メッセージ",
 "splat"=>["api/v2/メール"],
 "captures"=>["api/v2/メール"]}

:collectorとを文字列に変更し:footer、それらを本体内の本来あるべき場所に移動します。

require 'httparty'

url = HTTParty.post(
  "http://localhost:4567/api/v2/emails?survey=1",
  :headers => {
    'Content-Type' => 'application/x-www-form-urlencoded',
    'Accept' => 'application/x-www-form-urlencoded'
  },
  :body => {
    "subject" => 'subject',
    "sender" => 'sender',
    "message" => 'message',
    'collector' => 'collector',
    'footer' => 'footer'
  },
)

puts url

出力:

["survey", "1"]["subject", "subject"]["sender", "sender"]["message", "message"]["collector", "collector"]["footer", "footer"]["splat", ["api/v2/emails"]]["captures", ["api/v2/emails"]]

そしてシナトラはこう言いました。

127.0.0.1 - - [2013 年 9 月 11 日 18:04:13] "POST /api/v2/emails?survey=1 HTTP/1.1" 200 - 0.0010
{"調査"=>"1",
 "件名"=>"件名",
 "送信者"=>"送信者",
 "メッセージ"=>"メッセージ",
 "コレクター"=>"コレクター",
 "フッター"=>"フッター",
 "splat"=>["api/v2/メール"],
 "captures"=>["api/v2/メール"]}

問題は、POST リクエストが URL と:bodyハッシュのみを使用することです。ハッシュ内には:body、サーバーに送信するすべての変数が入ります。そのため、 と を使用した 2 番目のバージョンのコードが機能し'collector'ます'footer'

于 2013-09-12T01:15:07.720 に答える
0

:bodyパラメータの後にカンマはありません

于 2013-09-11T23:18:22.077 に答える