• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Rubyでnet::httpを用いてPOSTする)

RubyでNet::HTTPを用いてPOSTする方法とは?

このQ&Aのポイント
  • RubyでNet::HTTPを使用してPOST送信する方法について教えてください。
  • Net::HTTPクラスのpostメソッドを使用して送信する際、パラメータのデリミタとして&を含む値を渡す方法についても教えてください。
  • Net::HTTP::Postクラスのrequestメソッドとは異なり、postメソッド使用時にキチンと値を取得できない場合、対処方法があるのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.1

この辺ちゃんと使った経験が無いので、「普通こうする」という回答にはなって無いかもしれませんが・・・ >Net**HTTP::Postクラスのrequestメソッドを用いてハッシュとして渡した時 これは、 #set_form_data (#form_data=) で予め値を入れたっていうことですよね? net/http ライブラリのソースを覗いてみると、set_form_dataの方はエンコードかけていますが、HTTP#postの2引数目はそのまま文字列として取り扱っているみたいです。 ということで、一度きりの使い捨てなら「query=subject&target=ruby&PHP」を「query=subject&target=ruby%26PHP」へ書き換えれば済むんじゃないでしょうか。 こういう使い方が多いのであれば、ヘルパーメソッド作っておいてもいいかもしれませんが・・・ https://ideone.com/3fi2I そもそも、HTTP#post側だとこういう用法を想定していないのかもしれませんね。 フォームのデータ送るなら、#form_data=を予め使っておく方が素直なのかもしれません。

1000vicki
質問者

お礼

なるほど・・。postメソッドを使いたい理由は、単純に記述が短くてすむかなとおもたからです。 Net::HTTP::Postとだと、間にワンクッション挟むことになるので ちょこと冗長になるかなと・・・・・・。 Net::HTTP::Postをつかって自分で、楽な自作メソッドつくったほうがいいかもですね・・。

関連するQ&A