2015-01-26 5 views
0

Я использовал axis2c для генерации c-файлов из файла wsdl. (this is the WSDL file I used) теперь у меня есть этот список файлов:Как подключиться к webservice с сгенерированными файлами c из wsdl2c

adb_helloName.c 
adb_helloNameResponse.c 
axis2_extension_mapper.c 
axis2_stub_HelloService.c 
plus I have their header files. and a HelloServiceClient.vcproj file. 

Я создал проект в визуальной студии, и теперь я хочу знать, как я могу подключиться к вебу-сервису и получить возвращаемые значения. (в этом случае у меня есть wwdl-файл hello world, который получает имя и передает «Hello + (thisName)»)

Спасибо заранее.

ответ

1

Я нашел решение. Я попытался создать свой собственный сервер со своим собственным файлом wsdl.

Я создал сервер в JAVA, которая получает 2 числовые значения и добавить их вместе:

public class Math { 

    public int addOperator(int num1, int num2){ 
     return (num1+num2); 
    } 
} 

Затем я создал файл WSDL из него в Eclipse. из файла WSDL Я создал гр файлы:

adb_addOperator.c

adb_addOperatorResponse.c

axis2_extension_mapper.c

axis2_stub_MathService.c

плюс у меня есть свой заголовок файлы.

MathServiceClient.vcproj file.

Я импортировал этот проект в визуальную студию. Затем я добавил этот math.c файл моего проекта:

#include "axis2_stub_MathService.h" 

int main(
    int argc, 
    char *argv) 
{ 
    axutil_env_t * env = NULL; 
    axis2_char_t * operation = NULL; 
    axis2_char_t * client_home = NULL; 
    axis2_char_t * endpoint_uri = NULL; 
    axis2_stub_t * stub = NULL; 
    adb_addOperatorResponse_t * add_res = NULL; 
    adb_addOperator_t * add_in = NULL; 
    int res_val = 0; 
    endpoint_uri = "http://localhost:8080/AddOperator/services/Math"; //this is the tomcatServer running the MathServer 
    env = axutil_env_create_all("alltest.log", AXIS2_LOG_LEVEL_TRACE); 

    /* Set up deploy folder. */ 
    client_home = AXIS2_GETENV("AXIS2C_HOME"); 
    if (!client_home) 
     client_home = "../../../deploy"; 
    stub = axis2_stub_create_MathService(env, client_home, endpoint_uri); 
    add_in = adb_addOperator_create(env); 
    adb_addOperator_set_num1(add_in, env, 14); //initializing num1 
    adb_addOperator_set_num2(add_in, env, 33); //initializing num2 
    add_res = axis2_stub_op_MathService_addOperator(stub, env, add_in); 
    if (!add_res) 

    { 
     printf("Error: response NULL\n"); 
     return -1; 
    } 
    res_val = adb_addOperatorResponse_get_addOperatorReturn(add_res, env); 
    printf("Add Result : %d ", res_val);  

    return 0; 
} 

составлен проект. а затем я открыл cmd и открыл каталог MathService.exe. затем я запустил MathService. Он работал правильно.