如何设置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仍然存在。
感谢。
答案 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及更高版本中已弃用。