【问题标题】:Microsoft SSRS consuming JAX-WS Web ServiceMicrosoft SSRS 使用 JAX-WS Web 服务
【发布时间】:2009-10-26 23:38:38
【问题描述】:

我使用 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 一起使用。

【问题讨论】:

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


    【解决方案1】:

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

    Java 服务应该足够聪明,不会吐出这些字符;恐怕我不知道如何帮助它。

    【讨论】:

    • 谢谢埃里克。 SSRS 是将 BOM 添加到帖子正文的唯一方法。我使用了 SSIS,甚至用 C# 创建了一个 .NET 应用程序,它们都很好地使用了 Web 服务。
    • 在不相关的说明中,非常感谢您编写 Fiddler。我喜欢 FIDDLER,无法想象没有 out 开发 webapps。所以感谢 Eric 创造了这个很棒的工具。
    猜你喜欢
    • 2023-04-10
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多