2009-10-26 99 views
0

我已经开发使用JAX-WS Web服务(V2.1.3 - 太阳JDK 1.6.0_05)当我使用Java客户端或了SoapUI或其他Web服务测试工具,工作得很好。我需要使用2005的Microsoft SQL Server Reporting Services来消费这个服务,我得到以下错误微软SSRS消费JAX-WS Web服务

<?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一起工作。

回答

0

“特殊字符”是表示该后体是UTF-8“字节顺序标记”(BOM)。 http://unicode.org/faq/utf_bom.html#BOM

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

+0

谢谢埃里克。 SSRS是将BOM添加到帖子主体中的唯一东西。我使用了SSIS,甚至在C#中创建了一个.NET应用程序,并且它们都使用了web服务。 – 2009-10-28 00:19:28

+0

在一个不相干的笔记上,非常感谢你写小提琴手。我喜欢FIDDLER,无法想象开发webapps。所以谢谢Eric创建这个很棒的工具。 – 2009-10-29 12:40:53