Microsoft SSRS, использующий веб-сервис JAX-WS - PullRequest
0 голосов
/ 27 октября 2009

Я разработал веб-сервис с использованием JAX-WS (v2.1.3 - Sun JDK 1.6.0_05), который прекрасно работает, когда я использую клиент Java, SoapUI или другие инструменты тестирования веб-сервисов. Мне нужно использовать эту службу с помощью служб отчетов Microsoft SQL Server 2005, и я получаю следующую ошибку

<?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, то вызов веб-службы работает.

Мой вопрос: почему 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 голосов
/ 28 октября 2009

«Специальные символы» - это «Маркер порядка байтов» (BOM), указывающий, что телом сообщения является UTF-8. http://unicode.org/faq/utf_bom.html#BOM

Служба Java должна быть достаточно умной, чтобы не задевать этих персонажей; Боюсь, я не знаю, как помочь.

...