2013-03-14 132 views
1

有沒有方法可以在ContentExchange對象中設置請求屬性?到目前爲止,我一直在做的是通過使用setRequestContentSource(InputStream inputstream)方法將信息發送到請求正文中的服務器。但是,如果我想發送按字段名稱分類的信息,例如Content,Title,Author等,我該怎麼辦?使用ContentExchange設置請求屬性

我現在的代碼粘貼在下面。謝謝你的幫助!

exchange.setRequestContentSource(new ByteArrayInputStream(
    serialized.getBytes("UTF-8"))); 

exchange.setRequestContentType("text/html"); 
exchange.setMethod("POST"); 
exchange.setURL(("http://localhost:8089/")); 
client.send(exchange); 

更確切地說,通過請求屬性,我的意思是相當於request.setAttribute(「Name」,「ABC」)的東西。只有在這種情況下,纔會通過ContentExchange對象發送請求。

+0

更具體一點,當你說「設置請求屬性」時,你是什麼意思? – 2013-03-14 19:35:39

+0

對不起。我的意思是相當於request.setAttribute(「Name」,「ABC」)。只有在這種情況下,纔會通過ContentExchange對象發送請求。 我也在問題中添加了這些信息,謝謝! – user2171246 2013-03-14 19:51:01

回答

1

啊,所以ServletRequest屬性不是HTTP協議的一部分。 沒有通過HTTP協議發送這些屬性的標準方式。實際上,servlet規範本身限制了它用於特定於應用程序的信息(例如將信息從過濾器傳遞給servlet)以及SSL證書相關信息。

但是,使用standard POST and form data,通過exchange.setRequestContentType("multipart/form-data");並使用HttpServletRequest.getParameter("Content")等獲得這些值,類似於如何從Web瀏覽器提交FORM。在這裏受益,你甚至可以提供一個簡單的HTML FORM來測試我們的應用程序。

選擇#2將以類似於JSON或XML的標記發送數據,並讓服務器解析它。 這有利於允許分層數據。

如果您對此有興趣,我建議你閱讀的休息,也許挖爲REST庫像JerseyRestlet,像JAX-RS標準。

+0

能否請您更清楚地說明如何使用標準POST和表單數據來做到這一點,或者將我指向一個資源/教程來展示它如何實現?謝謝! – user2171246 2013-03-15 18:33:12

+0

您需要使用'URLEncoder.encode()'格式化'serialized'字符串,類似於其他關於在stackoverflow上使用java進行http表單發佈的問題。 http://stackoverflow.com/a/9954851/775715 – 2013-03-15 20:35:13