2017-10-25 13 views
0

私は作品次のようcurlありますRuby + HTTParty - データバイナリでPOSTリクエストを送信するには?

curl 'https://externalsite.com/ForgotPasswordSubmit.action' \ 
-X POST \ 
-H 'Content-Type: multipart/form-data; boundary=----qwertyuiop' \ 
--data-binary $'------qwertyuiop\r\nContent-Disposition: form-data; name="xsrf_token"\r\n\r\nnull\r\n------qwertyuiop\r\nContent-Disposition: form-data; name="emailAddr"\r\n\r\[email protected]\r\n------qwertyuiop--\r\n' 

を、私は同じことを行うにはルビー+シナトラアプリを取得しようとしているが、それは働いていないし。

HTTParty.post "https://externalsite.com/ForgotPasswordSubmit.action", :headers => {"Content-Type"=>"multipart/form-data; boundary=----qwertyuiop"}, :body => '------qwertyuiop\r\nContent-Disposition: form-data; name="xsrf_token"\r\n\r\nnull\r\n------qwertyuiop\r\nContent-Disposition: form-data; name="emailAddr"\r\n\r\[email protected]\r\n------qwertyuiop--\r\n' 

答えて

0

私は最終的にそれがcurbで動作するようになった。ここに私の最新の試みです。主な問題はcurl$'my_string\n'文字列のタイプが\r\n文字を新しい行に変えてしまうのに対し、ルビーではに自動的に解析された'my_string\n'を試していました。二重引用符を使用するように変更することで、私はその問題を解決しました。

最終作業コードは次のとおりです。

curl = Curl::Easy.new('https://externalsite.com/ForgotPasswordSubmit.action') 
curl.headers["Content-Type"] = "multipart/form-data; boundary=----qwertyuiop" 
data = "------qwertyuiop\r\nContent-Disposition: form-data; name=\"xsrf_token\"\r\n\r\nnull\r\n------qwertyuiop\r\nContent-Disposition: form-data; name=\"emailAddr\"\r\n\r\n#{email}\r\n------qwertyuiop--\r\n" 
curl.post_body=data 
curl.http_post 
関連する問題