9

Web サーバー経由でドキュメント (XML など) を送信する経験があまりないので、HTTP の理解が不足していたら申し訳ありません。

127.0.0.1portの ruby​​ アプリに基本的な Mongrel Web サーバーをセットアップしました2000。(サーバー)。

同じコンピューターで別の Ruby アプリを実行しています。(クライアント)。

クライアントが XML ドキュメントをサーバーに POST する必要があります。

これを行うために Net::HTTP を使用してみましたが、何をすべきかを示す明確な例が見つかりません。行ってみましたが、エラーが発生しました。できるだけ基本的なものにするために、リクエストを分解しました。

http = Net::HTTP.new("127.0.0.1", 2000)
http.post('file', 'query=foo') #xc.rb line 6

しかし、次のエラーが発生します

    C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:141:in `read_nonblock': An existing connection was forcibly closed by the remote host. (Errno::ECONNRESET)
    from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:141:in `rbuf_fill'
    from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
    from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1293:in `request'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:745:in `start'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1284:in `request'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1307:in `send_entity'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1096:in `post'
    from W:/Ruby/A/xc.rb:6:in `<main>'

私はそれを完全に間違っていると思います。のような基本的なデータを投稿できるようにする例を教えてください (またはチュートリアルを教えてください) "<tag1>text</tag1>"。うまくいけば、適切なヘッダーを設定して応答を処理できるようになります。

また、net/http を使用する必要はありません。追加の商用利用ライセンス制限がない無料の方法は問題ありません。

4

1 に答える 1

4

rest-client gemを使用すると、これは信じられないほど簡単です。

require 'rest-client'

response = RestClient.post "http://127.0.0.1:2000", "<tag1>text</tag1>", :content_type => "text/xml"
于 2012-02-03T00:15:53.817 に答える