[英]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.