2011-06-19 79 views
0

如何在HTTP GET或HTTP put請求中發送xml文件?我正在使用restlet框架。 我新來這個,根據我讀過的,我應該序列化XML。 這樣做後,我怎麼能發送它的HTTP請求?Restlet:在HTTP請求中發送xml

+0

什麼樣的服務器軟件? – Michas

+0

使用restlet,遵循休息的架構。 – SLA

+0

將此信息添加到您的問題的內容和標題。 – Michas

回答

1

即使你不使用一個結合了片斷的庫(我認爲Restlet確實提供了一些簡化),它很簡單,就像你提到的一樣,你需要的只是一個HTTP連接/請求,可能會消耗)XML。 所以除了Restlet特有的東西(希望其他人可以解釋)之外,這裏有一個「遊擊」的方法,只使用獨立的部分。

要獲得HTTP連接,您可以使用JDK功能(如果這樣做不起作用,Apache HTTP客戶端或async-http-client可以提供更多功能);是這樣的:

URL url = new URL("http://myservice.mycompany.com:8080/path/to/service"); 
// configure settings here if/as necessary 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
// if you need to post stuff, do: 
conn.setRequestMethod("POST"); 
// need to set content type too possibly 
conn.setDoOutput(true); // but only if you do POST stuff 
OutputStream out = conn.getOutputStream(); 
// here you would output XML request 
//... 
out.close(); 
// and now read response 
InputStream in = conn.getInputStream(); 
// and process it 
// ... 
in.close(); 

現在,作爲生產/使用XML,您可以使用所有使用的輸入/輸出流讀/寫XML通常的工具。如果你喜歡數據綁定(來自XML的Java POJOs),JAXB是要走的路(javax.xml.bind。*); JDK 1.6及更高版本捆綁默認實現。

或者,您可以簡單地使用Stax(javax.xml.stream。*)實現,例如Woodstox,通過簡單調用讀取/寫入XML;對於獎勵積分,請查看StaxMate,這可以相當簡化這種風格。