2010-02-24 49 views
1

我想從java將xml文檔發佈到rails應用程序。我有一個很難寫的http請求 這裏是我的Java代碼:張貼xml數據從java到rails(寧靜服務)

 Socket sock = new Socket(addr, port); 
     String path = "http://127.0.0.1:3000/mycontrollers.xml"; 
     BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream(), "UTF-8")); 
     wr.write("POST +path+ " HTTP/1.0\r\n"); 
     wr.write("Host: http://127.0.0.1:3000\r\n"); 
     wr.write("Content-Length: " + xmldata.length() + "\r\n"); 
     wr.write("Content-Type: text/xml; charset=\"utf-8\"\r\n"); 
     wr.write("\r\n"); 
     //Send data 
     wr.write(xmldata); 
     wr.flush(); 

作爲回報,我有:未找到:/mycontrollers.xml

任何想法?

非常感謝

+0

如果您從瀏覽器訪問http://127.0.0.1:3000/mycontrollers.xml,會得到什麼? –

+1

ruby​​應用程序是否回答來自瀏覽器的請求?從這個端口上的telnet?爲什麼不使用'commons-httpclient' ps你忘了一個報價(「)在第4行,在'+ path'之前 –

回答

0

爲什麼不利用的Caucho已經實施的解決方案:hessianburlap庫?這可用於ruby和java。

你有沒有嘗試用more simple tools(例如firefox插件)發佈xml?

我想你也需要爲implement the rails side工作。我知道一個人可以很容易地從軌道檢索xml,但不是我認爲的其他人)

0

從您看到的錯誤聽起來好像您沒有路由設置來處理您的Rails應用程序中的/mycontrollers.xml。您是使用資源助手還是定義了自定義路線?

如果您已經定義了自己的路線,則需要將.:format添加到路線,以便Rails可以從網址中獲取內容類型。

另一種替代方法是發送POST中的Accept標題並將其發送到/mycontrollers而不是/mycontrollers.xml