不支持的内容类型:text / html; charset = UTF-8支持的是:[text / xml]

时间:2012-08-29 02:37:30

标签: web-services google-app-engine soap

我正在尝试使用Web服务从服务器检索数据。我遵循http://googcloudlabs.appspot.com/codelabexercise5.html中指定的教程,当然我修改了原始代码以满足我的要求。

现在我收到如下错误:不支持的内容类型:text / html; charset = UTF-8支持的是:[text / xml]

要查看完整错误,我在获取数据时编写了一个新的错误函数:

var errorFn = function(e){

    for(var p in e){
    alert(e[p]);
    }
}

var successFn = function(resp){

    var data='';
    if(resp){
    //getting the data from the response object
        data=resp.data;         
    }

        //Some other code here... 

}

getData("/entity",null,successFn,errorFn);

浏览器警告错误对象:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 500 Unsupported Content-Type: text/html; charset=UTF-8 Supported ones are: [text/xml]</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /vehicle. Reason:
<pre>    Unsupported Content-Type: text/html; charset=UTF-8 Supported ones are: [text/xml]</pre></p><h3>Caused by:</h3><pre>com.sun.xml.internal.ws.server.UnsupportedMediaException: Unsupported Content-Type: text/html; charset=UTF-8 Supported ones are: [text/xml]

    at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(Unknown Source)

    at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(Unknown Source)

    at com.sun.xml.internal.ws.encoding.SOAPBindingCodec.decode(Unknown Source)

    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source)

    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source)

    at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(Unknown Source)

    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source)

    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source)

    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source)

    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source)

    at com.sun.xml.internal.ws.client.Stub.process(Unknown Source)

    at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(Unknown Source)

    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)

    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)

    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source)

    at $Proxy32.getAllVehicles(Unknown Source)

    at com.google.appengine.codelab.soap.client.VehicleServlet.doGet(VehicleServlet.java:52)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)

    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)

    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35)

    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)

    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:60)

    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)

    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)

    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)

    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)

    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)

    at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)

    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)

    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)

    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)

    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)

    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)

    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94)

    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:370)

    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

    at org.mortbay.jetty.Server.handle(Server.java:326)

    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)

    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)

    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)

    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)

    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)

    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)

    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

</pre>
<hr /><i><small>Powered by Jetty://</small></i><br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                
<br/>                                                

</body>
</html>

有人帮我解决了这个问题吗?

提前感谢!

7 个答案:

答案 0 :(得分:4)

在课程开头添加以下代码:

@BindingType("http://java.sun.com/xml/ns/jaxws/2003/05/soap/bindings/HTTP/")

然后重新启动服务器。

答案 1 :(得分:2)

这个错误发生在我身上,原因是对webservices的调用是针对无效的主机,因此Web服务器以http错误消息而不是xml soap消息进行响应。

答案 2 :(得分:1)

我的情况,同样的错误,但原因不同:

在wsdl中未指定端口,服务器将其返回给Java服务“生成器”。 因此,Web服务器使用主页回答了SOAP调用,主页当然不是text / XML而是text / html。

将端口添加到wsdl解决了问题。

答案 3 :(得分:0)

简单:您的客户端(浏览器?)正在以Content-Type: text/html发送数据,而Content-Type: application/soap+xmlold SOAPContent-Type: text/xml)。

因此,如果您手动提出请求,则应将Content-Type header添加到HTTP请求中。

答案 4 :(得分:0)

组合SOAP请求时,也会发生此错误,并且提供的内容编码/格式化/不可访问。这可能不属于您的情况,但如果其他人在发送请求之前遇到相同的错误,则表示用于撰写邮件本身或它的附件的数据是不正确编码,格式化或通常无法访问。

答案 5 :(得分:0)

尝试其他客户。 在我的情况下,问题出现在jdeveloper 11.1.2.0(Http analyzer作为客户端)并由Jdeveloper 11.1.2.3(Http analyzer作为客户端)解决

此问题来自请求Content-Type

答案 6 :(得分:0)

我也遇到过这个问题,最后我发现这是由服务器引起的。

服务器构建在Node.js上,同时使用两个软件包multerformidable来解析多部分/表单数据&#39;输入表格数据。这导致了冲突:实际的表单解析器formidable无法获取原始表单数据,因为multer已经处理了该数据并获得了干净的内容。我们删除了multer,然后问题就解决了。