Сбой при написании простого клиента веб-службы WSO2 / C ++ - PullRequest
2 голосов
/ 14 января 2009

Может ли кто-нибудь успешно работать с клиентом, используя пакет услуг WSO2 / C ++ web ? Я перепробовал практически все, о чем могу думать, но каждый раз, когда я пытаюсь запустить очень простой клиент, у меня происходит сбой. Вот пример кода из одной из примеров программ ...

#include <stdio.h>
#include <WSRESTClient.h>
#include <OMElement.h>
#include <iostream>
#include <AxisFault.h>
using namespace std;
using namespace wso2wsf;

int _tmain(int argc, _TCHAR* argv[])
{
 WSRESTClient * sc = new WSRESTClient("http://localhost:9090/axis2/services/echo/echoString");
    try 
    {   
        sc->initializeClient("echo_rest.log", AXIS2_LOG_LEVEL_TRACE);
    }   
    catch (AxisFault & e)
    {   
        cout << endl << "Error: " << e << endl;
        return 0;
    }
    Options * op = sc->getOptions();
    op->setHTTPMethod(AXIS2_HTTP_GET);
    sc->setOptions(op);
    {
        OMNamespace * ns = new OMNamespace("http://ws.apache.org/axis2/services/echo", "ns1");
        OMElement * payload = new OMElement(NULL,"echoString", ns);
        OMElement * child = new OMElement(payload,"text", NULL);
        child->setText("Hello World!");
        cout << endl << "Request: " << payload << endl;
        OMElement * response;
        try
        {
            response = sc->request(payload, "http://ws.apache.org/axis2/c/samples/echo/soap_action");
            if (response)
            {
                cout << endl << "Response: " << response << endl;
            }
        }
        catch (AxisFault & e)
        {
            cout << endl << "Error: " << e << endl;
        }
        delete payload;
    }
    delete sc;

    return 0;
}

Я получаю сбой каждый раз в момент создания объекта WRESTClient. Кажется, это проблема где-то в коде WSO2, но я не получаю сообщение об ошибке, указывающее, в чем именно заключается проблема. Моим следующим шагом будет сборка с использованием исходного кода для WSO2 и прохождение кода, который дает сбой, но я надеюсь, что кто-то сталкивался с этой проблемой раньше и получил немедленную обратную связь.

1 Ответ

1 голос
/ 20 марта 2009

Рассматривали ли вы возможность размещения блока try / catch-all вокруг конструкции объекта WRESTClient? Если вы создаете дамп ядра в этой строке, то есть вероятность, что оно выдает исключение, и если вы его поймаете, вы сможете получить более полезную информацию об ошибке из этого исключения.

Кроме этого, время отключить отладчик, как вы предложили.

...