Crash编写简单的WSO2 / C ++ Web服务客户端

时间:2009-01-13 21:16:31

标签: c++ web-services wso2 wso2carbon

是否能够使用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 个答案:

答案 0 :(得分:1)

您是否考虑过在WRESTClient对象构造周围放置一个try / catch-all块?如果你在这条线上进行核心转储,则可能会抛出异常,如果你抓住了它,那么你可能会从该异常中获得更多有用的错误信息。

除此之外,按照建议的时间打破调试器。