Railsのデータを外部ASPに投稿する必要があります。
私のcurlコマンドは機能しています:
printf 'foo=bar\r\nparameter1=4711\r\nparameter2=4712' | curl --data-binary @- http://example.com/request.asp
net / httpでこれを行うにはどうすればよいですか?
パラメータ間に「\r\n」を保持することが重要です。
これまでの私のコーディング:
uri = URI.parse('http://example.com/request.asp')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(url.request_uri)
req.set_form_data(params)
response = http.request(req)
パラメータを設定するにはどうすればよいですか?
私はこのようなことを試みました:
params = {
'foo' => 'bar\r\n',
'parameter1' => '4711\r\n',
'parameter2' => '4712'
}
しかし、それは機能していません。エンコードする必要がありますが、どうすればよいですか?
URLエンコードされたバージョンの'\r \ n':%0D%0Aで試してみましたが、機能しませんでした。curlのようにバイナリとして送信する方法はありますか?
ありがとう。
編集:あなたの答えのおかげで私は解決策を見つけました:
uri = URI.parse('http://example.com/request.asp')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(url.request_uri)
req.body = "foo=bar\r\nparameter1=4711\r\nparameter2=4712"
response = http.request(req)
set_form_data a)エンコードし、b)「&」を追加します。どちらも必要なものはありません。体を直接セットすることが解決策でした。