HttpMessage.setMethod (HttpMessage.POST) изменяется с помощью GET в BlockingSenderDestination - PullRequest
3 голосов
/ 05 марта 2012

Я пытаюсь перенести приложение Blackberry с OS 6 на OS 7 (мое приложение в настоящее время работает на OS 6). Теоретически это не должно вызывать никаких проблем, но я нашел проблему, которую до сих пор не могу решить. При выполнении вызовов к веб-службам (SOAP) я настраиваю HttpMessages на использование метода POST, но когда вызов выполняется, он поступает на сервер в виде GET. Это большая проблема для меня, потому что сервер, с которым я работаю, не поддерживает GET (всегда приводит к «Http 500 error»). Эта проблема не возникает на симуляторе, только на устройстве.

Знаете ли вы какой-нибудь способ для этого? Это проблема с версией ОС? (См. Ниже код, который я использую).

Устройство

Модель: Bold 9930 Перевозчик: Sprint ОС: 7.0 Bundle 1296 (v7.0.0.241, платформа 5.0.0.442)

Симулятор (со стороны симулятора у меня нет проблем)

Модель: Bold 9930 ОС: 7.0 Bundle 1962 (v7.0.0.440, Sept_24_2011_signed, платформа 4.0.0.141)

public void run() {
        context.setEnableBtnsend(false);
        BlockingSenderDestination blockSendDest = null;

        try {
            URI uri = URI.create(URL_BASE);
            blockSendDest
                = (BlockingSenderDestination) DestinationFactory.getSenderDestination(
                senderContext.getName(), uri);

            if (blockSendDest == null) {
                blockSendDest = DestinationFactory.createBlockingSenderDestination(
                    senderContext, uri);
            }

            ByteMessage requestMessage = blockSendDest.createByteMessage();
            requestMessage.setTransportHeader("Content-Type", "text/xml;charset=UTF-8");
            requestMessage.setTransportHeader("SOAPAction", "\"\"");
            // getBodyRequest() -> Insert SOAP request, works fine, was tested on SOAP UI
            requestMessage.setStringPayload(getBodyRequest());
            ((HttpMessage) requestMessage).setMethod(HttpMessage.POST);
            blockSendDest.resume();
            Message response = blockSendDest.sendReceive(requestMessage);

            if (response != null) {
                procesMessageResponse(response);
            }
            // ...
        }
        catch (Exception ex) {
             handleException(ex);
        }
...