2013-01-15 281 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中 –