スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Ruby]net/httpでPOST

net/httpを使用して、シンプルなPOSTからファイルのアップロードまで試してみました。

まずはシンプルなパターン。
require "net/http"
require "uri"

uri = URI.parse("http://www.mysample.com/index.php")
Net::HTTP.start(uri.host, uri.port){|http|
#ヘッダー部
header = {
"user-agent" => "Ruby/#{RUBY_VERSION} MyHttpClient"
}
#ボディ部
body = "id=1&name=name"
#送信
response = http.post(uri.path, body, header)
}

次に、HTTPRequestのサブクラスであるNet::HTTP::Postを使用したパターン。
require "net/http"
require "uri"

uri = URI.parse("http://www.mysample.com/index.php")
Net::HTTP.start(uri.host, uri.port){|http|
#リクエストインスタンス生成
request = Net::HTTP::Post.new(uri.path)
#ヘッダー部
request["user-agent"] = "Ruby/#{RUBY_VERSION} MyHttpClient"
#ボディ部
#第二引数は省略可能
request.set_form_data({:id=>"1", :name=>"name"}, "&")
#送信
response = http.request(request)
}

最後にファイルアップロードのパターン。
(form enctype="multipart/form-data"のパターン)
require "net/http"
require "uri"

uri = URI.parse("http://www.mysample.com/index.php")
Net::HTTP.start(uri.host, uri.port){|http|

#リクエストインスタンス生成
request = Net::HTTP::Post.new(uri.path)

#ヘッダー部
request["user-agent"] = "Ruby/#{RUBY_VERSION} MyHttpClient"
request.set_content_type("multipart/form-data; boundary=myboundary")
#(以下でも可)
#request["content-type"] = "multipart/form-data; boundary=myboundary"

#ボディ部
#multipart/form-dataの仕様にあわせてbodyを作成
body = ""
body.concat("--myboundary\r\n")
body.concat("content-disposition: form-data; name=\"id\";\r\n")
body.concat("\r\n")
body.concat("1\r\n")

body.concat("--myboundary\r\n")
body.concat("content-disposition: form-data; name=\"file1\"; filename=\"sample.txt\"\r\n")
body.concat("\r\n")
File::open("sample.txt"){|f| body.concat(f.read + "\r\n") }

body.concat("--myboundary\r\n")
body.concat("content-disposition: form-data; name=\"file2\"; filename=\"sample.png\"\r\n")
body.concat("\r\n")
File::open("sample.png"){|f| body.concat(f.read + "\r\n") }

body.concat("--myboundary--\r\n")
request.body = body

#送信
response = http.request(request)
}

コメントの投稿

非公開コメント

プロフィール

jou4

Author:jou4
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。