RubyでPOST送信して結果を受け取る

RubyでHTTP経由でのXMLの受信と解析でGETする方法は書きましたが、POSTまでは書いていませんでした。今回はRubyでPOSTする方法です。GETで猛烈に長いクエリをつければPOSTできなくても同じことが実現できますが、まぁそこは気にせず。

require ‘net/http’
Net::HTTP.version_1_2
http = Net::HTTP.new(ホスト名, 80)
response = http.post( ‘/hoge.php’, ‘a=hoge&b=hogehoge’ )
p response.body

これだけ。ホスト名にはhttpは付けません。ポート番号は省略しても大丈夫です。Content-Type等は必要に応じて。newするときの第三引数です。「application/x-www-form-urlencoded」でいいのかな?ハセテツはつけてませんが、きちんとPOSTできてます。あー、相手がUTF8じゃない場合とかは文字コードの指定が必要かも。

responseの中身を見ればHTTPステータスコードとかも入っていると思います。その辺は割愛。

次はファイルのアップロードのやり方なんかも調べてみましょう。使うかどうかは微妙な気もしますが。

「RubyでPOST送信して結果を受け取る」への2件のフィードバック

  1. 偶然こちらをみつけました。rubyを学習しようと思っていろいろ検索していたらこちらにいたりました。生涯一開発屋というのは、野村克也の生涯一捕手と同じですばらしいですね。僕も15年前までは開発屋だったんですが、生涯一にはなりそこねました。

    もしご迷惑でなければ、ときどきrubyやこのサイトの内容について教えていただけませんか。まあ、ハセテツさんと違って難しいことはするつもりありませんが。これを機会に御見知りいただけると嬉しいですが。  今井

    返信
  2. > 今井さん

    コメントありがとうございます。
    すっかりRubyからは遠ざかってしまいましたが、
    それでもよければどうぞお見知りおきください。

    質問いただくときはTwitterがいいかもしれません。

    返信