2017-10-25 9 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