ksoap2 на андроиде не в состоянии проанализировать MOTM-кодированный ответ - PullRequest
4 голосов
/ 13 февраля 2012

По предмету.

Я запускаю веб-приложение grails, выставляя сервис как веб-сервис через плагин Axis2 (затем он использует Apache Axis2).

Все хорошо, за исключением того, что Android, работающий с ksoap2, не работает при обработке ответа http.

Я получаю сообщение об освобождении:

org.xmlpull.v1.XmlPullParserException: неожиданный токен (позиция: TEXT --MIMEBoundaryur ... @ 4:13 в java.io.InputStreamReader@40fdd958)

Теперь я немного исследовал и обнаружил, что мое веб-приложение, отвечая на вызов веб-службы в кодировке мыла, возвращает данные как multipart/related.

Точнее, он возвращает что-то

    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: multipart/related;
                  boundary=MIMEBoundaryurn_uuid_AC5A47086C51CDF4581329104304545; type="text/xml";
                    start="<0.urn:uuid:AC5A47086C51CDF4581329104304546@apache.org>"
    Date: Mon, 13 Feb 2012 03:38:24 GMT
    Connection: close

    --MIMEBoundaryurn_uuid_AC5A47086C51CDF4581329104304545
    Content-Type: text/xml; charset=utf-8
    Content-Transfer-Encoding: 8bit
    Content-ID: <0.urn:uuid:AC5A47086C51CDF4581329104304546@apache.org>

    <?xml version='1.0' encoding='utf-8'?>
    <soapenv:Envelope 
            xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
            <soapenv:Body>
            <ns:sayHelloResponse 
                    xmlns:ns="http://api.account.mycompany.com">
                    <ns:return>Just a test... Hello John Doe!
            </ns:return>
            </ns:sayHelloResponse>
            </soapenv:Body>
    </soapenv:Envelope>
    --MIMEBoundaryurn_uuid_AC5A47086C51CDF4581329104304545--

Так что, очевидно, XmlPullParser завершается ошибкой, когда доходит до:

    --MIMEBoundaryurn_uuid_AC5A47086C51CDF4581329104304545

Возможно, он ожидал начала XML, но получил заголовки MOTM.

Теперь вопрос ... Как решить эту проблему?

...