2009-10-26 141 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