0

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

我指的是这个链接Android 中的解决方案,通过 HTTP POST (SOAP) 发送 XML。当我们像这样设置内容类型时很好,我的意思是 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 仍然存在。

谢谢。

4

1 回答 1

1

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

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

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

使用工厂方法 .create() 您可以使用字符集指定 mimetype - 框架将使用 ContentType 来正确发出有问题的标头。

示例 API 调用:

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

注意 HttpClient 4.1.2 的编辑

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

于 2013-01-15T15:00:30.097 回答