簡體   English   中英

使用 Ruby 將 XML 請求發布到網絡服務器

[英]Using Ruby to post an XML request to a webserver

恐怕我在通過網絡服務器發布文檔(例如 XML)方面沒有太多經驗,所以如果我對 HTTP 缺乏了解,我深表歉意。

我在127.0.0.1端口2000上的 ruby​​ 應用程序中設置了一個基本的 Mongrel Web 服務器。 (服務器)。

我在同一台計算機上運行一個單獨的 Ruby 應用程序。 (客戶端)。

我需要客戶端將 XML 文檔發布到服務器。

我曾嘗試使用 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; 任何不附帶額外商業用途許可限制的免費方法都可以。

當使用rest-client gem 時,這非常容易

require 'rest-client'

response = RestClient.post "http://127.0.0.1:2000", "<tag1>text</tag1>", :content_type => "text/xml"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM