2009-10-26 8 views
0

J'ai développé un service Web en utilisant JAX-WS (v2.1.3 - Sun JDK 1.6.0_05) qui fonctionne très bien lorsque j'utilise un client Java ou SoapUI ou d'autres outils de test des services Web . Je dois consommer ce service à l'aide Microsoft SQL Server 2005 Reporting Services et je reçois l'erreur suivanteMicrosoft SSRS consommant le service Web JAX-WS

<?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> 

Si j'utilise un proxy HTTP pour flairer ce que SSRS envoie, je vois EF BB BF comme le début de la Le corps du message et JAX-WS n'aiment pas ça. Si je supprime les caractères spéciaux et soumettez à nouveau la demande à l'aide de Fiddler, l'appel de service Web fonctionne.

Ma question est pourquoi SSRS introduit ces caractères spéciaux et comment puis-je l'arrêter? Si je ne peux pas l'arrêter, comment puis-je faire en sorte que JAX-WS les ignore? Voici ma requête SSRS:

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

J'ai aussi essayé une requête comme ceci ci-dessous:

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

Est-ce que quelqu'un a des idées sur ce que je peux essayer? J'ai essayé plusieurs types d'annotations sur le côté JAX-WS pour changer le type de SOAPBinding, etc. mais rien ne semble le faire fonctionner avec Microsoft SSRS.

Répondre

0

Les "Caractères spéciaux" sont les "marqueurs d'ordre d'octets" (BOM) indiquant que le corps du message est UTF-8. http://unicode.org/faq/utf_bom.html#BOM

Le service Java devrait être assez intelligent pour ne pas vomir sur ces caractères; J'ai peur de ne pas savoir comment l'aider.

+0

Merci Eric. SSRS est la seule chose qui ajoute la nomenclature au corps du message. J'ai utilisé SSIS et même créé une application .NET en C# et ils consomment tous très bien le webservice. –

+0

Sur une note non liée, merci beaucoup d'avoir écrit Fiddler. J'AIME FIDDLER et je ne peux pas imaginer développer des webapps sans. Merci Eric pour avoir créé cet outil génial. –

Questions connexes