HTTP Put设置内容类型

时间:2013-01-15 13:38:31

标签: java http content-type http-put

如何设置HTTP Put的内容类型为xxxx + xml?

我指的是此链接Android, sending XML via HTTP POST (SOAP)中的解决方案。我们设置这样的内容类型时很好,我的意思是xml随请求一起出现:

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

但是当我将类型 soap 更改为自定义内容时,xml会在请求上消失(我在wireshark上看到),如下所示:

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

然后,我尝试只放入xml,所以请求再次正常:

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

我想知道内容类型的规则究竟是什么,而不是与xml类型一起使用,以便xml仍然存在。

感谢。

1 个答案:

答案 0 :(得分:1)

假设您使用的是4.1.3或更高版本的HTTPClient -

构建实体时,您可以选择为某些实体指定用于POST或PUT操作的内容。

有一个ContentType对象应该用来指定它。

使用工厂方法.create()可以使用charset指定mimetype - 框架将使用ContentType来正确地发出相关标题。

示例API调用:

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

注意编辑HttpClient 4.1.2

对于4.1.2,当您为post或put操作创建实体时,请在 实体 上设置内容类型,而不是 < em>执行 (HttpPost或HttpPut)使用setContentType(String)。这在4.1.3及更高版本中已弃用。