Java HTTP放置集内容类型

Java HTTP放置集内容类型,java,http,content-type,http-put,Java,Http,Content Type,Http Put,如何将HTTP Put的内容类型设置为xxxx+xml 我指的是这个链接中的解决方案。这样设置内容类型很好,我的意思是xml随请求一起提供: httppost.setHeader("Content-Type","application/soap+xml;charset=UTF-8"); 但是当我将类型soap更改为自定义时,xml在请求中消失(我在wireshark上看到),如下所示: httppost.setHeader("Content-Type","application/vnd.oma

如何将HTTP Put的内容类型设置为xxxx+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.3或更高版本的HTTPClient-

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

应该使用一个对象来指定此项

使用factory方法.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(字符串)在实体上设置内容类型,而不是在执行中设置内容类型(HttpPost或HttpPut)。这在4.1.3及更高版本中被弃用。

如果MIME类型是标准类型之一,则可以像最初一样使用+xml。如果您使用的是自定义协议,则必须使用代表供应商的“vnd”来取代它。我已经将vnd.oma-pcc放在这里,但仍然不起作用。我遗漏了什么?添加“vnd”并不能让它工作,除非你有一个浏览器能够解码这种类型的内容。确保您添加了必要的库来解析此类内容;以编程方式使用java。您知道我如何添加必要的库来解析该内容类型吗?我认为这与服务器没有将此格式识别为其参数的格式有关。如果可以访问服务器中的代码,请检查POST方法是否用@Consumes(“application/vnd.oma pcc+xml”)注释。您可能能够调试程序,并查看服务器响应的确切内容,这可能会为您提供线索。哦..,不幸的是,我使用的是版本4.1.2,但我看到有httpmime-4.1.2.jar。现在我正在调查它是否能帮助我。@dejoong-我不认为需要HttpTime-API在标准httpclient jar中