恐怕我沒有太多關於通過網絡服務器發佈文檔(例如XML)的經驗,所以如果我對HTTP缺乏瞭解,我很抱歉。使用Ruby將XML請求發佈到網絡服務器
我有一個基本的Mongrel Web服務器設置在127.0.0.1
端口2000
上的一個紅寶石應用程序。 (服務器)。
我在同一臺計算機上運行單獨的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;任何不附帶額外商業使用許可限制的免費方法都可以。
你試圖調試客戶端時。但是,你證明了服務器功能正常嗎? – 2012-02-01 01:46:34
我通過網絡瀏覽器訪問相同的URL,並且服務器正確地在請求上做了'p'(我還沒有將它設置爲做其他任何事情)。當通過客戶端連接時,服務器報告它接收到格式錯誤的HTTP請求'HTTP解析錯誤,格式錯誤的請求(127.0.0.1):#
SimonMayer
2012-02-01 02:17:58