2012-01-31 66 views
8

恐怕我沒有太多關於通過網絡服務器發佈文檔(例如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;任何不附帶額外商業使用許可限制的免費方法都可以。

+0

你試圖調試客戶端時。但是,你證明了服務器功能正常嗎? – 2012-02-01 01:46:34

+0

我通過網絡瀏覽器訪問相同的URL,並且服務器正確地在請求上做了'p'(我還沒有將它設置爲做其他任何事情)。當通過客戶端連接時,服務器報告它接收到格式錯誤的HTTP請求'HTTP解析錯誤,格式錯誤的請求(127.0.0.1):# SimonMayer 2012-02-01 02:17:58

回答

4

這是令人難以置信的簡單,用rest-client寶石

require 'rest_client' 

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

如果您檢查請求服務器日誌,參數將是'{「tag1」=>「text」}'而不是普通的「」文本「'。這是爲什麼? – 2012-02-07 15:01:44

+0

我不知道。如果你想要一個答案,你應該真的問這個問題。 – SimonMayer 2012-02-07 21:42:39

相關問題