あなたの: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'
。