1

Web サービスの問題をデバッグしようとしていますが、Net:HTTP の動作に関する興味深い問題に遭遇しました (Net::HTTP ライブラリの使用方法を理解できていないことは間違いありません)。

以下を使用すると、サーバーから応答が返されます

require 'net/http'

USER='me'
PASS='me'
uri=URI('https://web.server.net/GetXMLData/webviewctl.asmx')

res=Net::HTTP.post_form(uri, 'action' => 'GetMyAssets', 'User' => USER, 'Password' => PASS)

別の方法として、クラス メソッドではなく、クラス Net::HTTP::Post のインスタンス化されたオブジェクトを使用することもできます。つまり、最終行は次のようになります。

req = Net::HTTP::Post.new(uri)
req.set_form_data('action' => 'GetMyAssets', 'User' => USER, 'Password' => PASS)

res = Net::HTTP.start(uri.hostname, uri.port) do |http|
   http.request(req)
end

ただし、これにより読み取りタイムアウトが発生します。 /home/steve/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/net/protocol.rb:158:in 'rescue in rbuf_fill': Net::ReadTimeout (Net::ReadTimeout)

なぜこれが考えられるのか、誰にも考えがありますか?2番目の方法で何が間違っていますか。実際にサーバーに送信されるものをより細かく制御できるため、これを使用することをお勧めします。

前もって感謝します

スティーブ

4

0 に答える 0