【问题标题】:Unsupported content type: text/plain; charset=ISO-8859-1不支持的内容类型:文本/纯文本;字符集=ISO-8859-1
【发布时间】:2014-03-04 15:57:25
【问题描述】:

我有一个 web 服务,它必须返回玩家详细信息作为响应。问题是,当我在 SoapUI 中发送相同的请求时,我得到了有效的响应,但是当我通过 Java 执行此操作时,我会在

中返回此消息

<faultstring> Unsupported content type: text/plain; charset=ISO-8859-1 </faultstring>。

任何想法为什么会出现问题?

这是我发送的请求:

> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:gen=" ">   
> <soapenv:Header/>   
> <soapenv:Body>
>       <gen:GetPlayerDetails>
>          <request>
>             <systemUID>C_GS01</systemUID>
>             <sessionID>TVM0MgAAB9IAAAFEjXyfxbvZ2oU_</sessionID>
>          </request>
>       </gen:GetPlayerDetails>    
> </soapenv:Body>
> </soapenv:Envelope>

已解决感谢@helderdarocha 在我的 HTTP 客户端类中进行了一些更改(最后一行):

        HttpClient httpclient = HttpClientBuilder.create().build();
        StringEntity strEntity = new StringEntity(request);
        HttpPost post = new HttpPost("http://10.47.44.163:8080" + endPointURI);
        post.addHeader("Content-type", "text/xml");

【问题讨论】:

  • 通过 Java 实现是什么意思?使用套接字?
  • @helderdarocha 我正在使用 Http 客户端
  • 显示该请求之前的 HTTP 标头。

标签: java web-services soap soapui


【解决方案1】:

您可能发送的请求没有适当的标头。您必须使用 Accept 标头声明您的客户端接受的数据类型作为响应:

Accept: application/xml; application/json;

此外,如果您要发送数据,您必须声明您发送的内容的 Content-type,并且它应该与您的服务接受的数据兼容。

Content-type: application/xml

例如,如果您以 XML 格式发送有效负载。

【讨论】:

  • 好吧,当我将请求打印到控制台以查看我发送的内容时,我收到的请求与在 SoapUI 中发送的请求完全相同
  • 将您的请求标头添加到您的问题中。
  • 我的意思是 HTTP 标头。这是重要的部分。发送到服务器的 XML 之前的内容。 HTTPClient 必须生成 HTTP 标头,该标头将通知服务器正文中的数据类型。如果正文包含 XML,它必须至少发送一个 Content-type: application/xml(如果服务器需要,甚至更具体)。
  • 在哪里可以看到 HTTP 标头?
  • 尝试使用像 addons.mozilla.org/en-US/firefox/addon/restclient 这样的交互式 HTTP 客户端(它是为 REST 创建的,但您也可以粘贴 SOAP xml 并将其作为有效负载发送)。您可以尝试添加 Content-type 标头,看看它们是如何工作的。
猜你喜欢
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 2012-09-29
  • 1970-01-01
相关资源
最近更新 更多