2013-01-15 162 views
0

如何設置HTTP的內容類型Put爲xxxx + xml?HTTP Put設置的內容類型

我指的是在這個鏈接Android, sending XML via HTTP POST (SOAP)解決方案。它很好,當我們設置內容類型這樣的,我指的是XML是來伴隨該請求:

httppost.setHeader("Content-Type","application/soap+xml;charset=UTF-8"); 

,但是當我改變類型肥皂的東西習俗,XML的請求消失(我看到Wireshark的),像這樣:

httppost.setHeader("Content-Type","application/vnd.oma-pcc+xml;charset=UTF-8"); 

然後,我想,我們只爲XML,因此請求再次是確定的:

httppost.setHeader("Content-Type","application/xml;charset=UTF-8"); 

我想知道什麼EXAC tly內容類型的規則比與xml類型一起使xml仍然存在。

謝謝。

+0

如果MIME類型是其中一種標準類型,那麼您可以像首先使用的那樣使用+ xml。如果您使用自定義協議,則必須使用代表Vendor的「vnd」取代它。 – Abraham

+0

我已經把vnd.oma-pcc,但仍然無法正常工作。我錯過了什麼? – dejoong

+0

除非您有能夠解碼該類型內容的瀏覽器,否則添加「vnd」不會使其工作。確保你添加了必要的庫來解析這種內容。 – Abraham

回答

1

假設你正在使用的4.1.3或更高了HTTPClient -

當構建你的實體,您必須指定被用於發佈的內容或PUT操作某些實體的選項。

有一個ContentType對象應該用來指定這個。

使用factory方法.create(),您可以使用charset指定mimetype - 框架將使用ContentType來正確地發出相關標題。

API呼叫範例:

ContentType.create("application/vnd.oma-pcc+xml", CharSet.forName("UTF-8"));

記錄編輯爲HttpClient的4.1.2

在4.1.2的情況下,當您創建實體後或放置操作,設置內容類型爲實體不是執行( HttpPost或HttpPut)使用setContentType(String)。這在4.1.3及更高版本中已棄用。

+0

哦,不幸我使用4.1.2版本,但我看到有httpmime-4.1.2.jar。現在我調查它是否可以幫助我。 – dejoong

+0

@dejoong - 我不相信需要httpmime - 該API位於標準httpclient jar中 –