&tag(Mechanize); &tag(Ruby,Mechanize); *目次 [#z7abda7a] #contents *参考情報 [#s68816a6] * 参考情報 [#pd745a2f] -[[RubyForge: WWW::Mechanize: Project Info:http://rubyforge.org/projects/mechanize/]]…公式。 -[[Class: Mechanize:http://mechanize.rubyforge.org/mechanize/Mechanize.html#M000238]]…公式ドキュメント。簡単なサンプルなどもあり。 -[[open-uriにできないこと - daily gimite:http://d.hatena.ne.jp/Gimite/20080405/1207365980]]…Mechanizeの簡単なサンプルあり。 *インストール [#of4f3d59] gem install mechanize **Basic/Digest認証でGET [#i7c538f4] #pre{{ require "rubygems" require "mechanize" agent= Mechanize.new() agent.auth("user", "password") page= agent.get("http://example.com/") print(page.body) }} **POST [#n9084783] #pre{{ require "rubygems" require "mechanize" agent= Mechanize.new() page= agent.post("http://example.com/", {"key" => "value"}) print(page.body) }} *トラブルシューティング [#w9393f15] **Digest認証でエラー [#vdb3992f] -[[Issues - tenderlove/mechanize - GitHub:http://github.com/tenderlove/mechanize/issues/#issue/31]]で報告されている現象がmechanize-1.0.0で発生。 -Digest認証されている、リクエストパラメータがつきのURLからGETしようとすると"Digest: uri mismatch"が発生する。 -リンク先で指摘されているように、mechanize/chain/auth_headers.rbの修正が必要。とりあえず以下の2カ所をuri.pathからuri.request_uriに修正。 #pre{{ .... a_2 = "#{request.method}:#{uri.request_uri}" .... header << "uri=\"#{uri.request_uri}\", " .... }}