Microsoft SSRS使用JAX-WS Web服务

时间:2009-10-26 23:38:39

标签: java web-services reporting-services jax-ws

我使用JAX-WS(v2.1.3 - Sun JDK 1.6.0_05)开发了一个Web服务,当我使用Java客户端或SoapUI或其他Web服务测试工具时,它可以正常工作。我需要使用2005 Microsoft SQL Server Reporting Services来使用此服务,我收到以下错误

<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
            <faultcode>S:Client</faultcode>
            <faultstring>Couldn't create SOAP message due to exception: XML reader error: unexpected character content:
                "?"
            </faultstring>
        </S:Fault>
    </S:Body>
</S:Envelope>

如果我使用HTTP代理来嗅出SSRS发送的内容,我会看到EF BB BF作为帖子主体的开头而JAX-WS不喜欢这样。如果删除特殊字符并使用Fiddler重新提交请求,则Web服务调用将起作用。

我的问题是为什么SSRS会引入这些特殊字符,如何让它停止?如果我无法阻止它,我怎样才能让JAX-WS忽略它们?这是我的SSRS查询:

<Query>
<Method Name="getOneUser" Namespace="http://vinny.com" >
</Method>
</Query>

我也尝试过如下查询:

<Query>
<Method Name="getOneUser" Namespace="http://vinny.com" >
</Method>
 <SoapAction>http://vinny.com/getOneUser</SoapAction>
<ElementPath IgnoreNamespaces="true">*</ElementPath>
</Query>

有没有人对我可以尝试的内容有任何想法?我已经在JAX-WS端尝试了几种不同类型的注释来改变SOAPBinding的类型等等,但似乎没有任何东西可以使它与Microsoft SSRS一起使用。

1 个答案:

答案 0 :(得分:0)

“特殊字符”是指示帖子正文为UTF-8的“字节顺序标记”(BOM)。 http://unicode.org/faq/utf_bom.html#BOM

Java服务应该足够聪明,不要嘲笑这些字符;我担心我不知道如何帮助它。