шаг 1, я имел создать WebService с помощью ASP.NET (C#):GSoap клиент не может передать значение аргумента для сервера
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(int a, int b)
{
return a.ToString() + "," + b.ToString();
}
}
шага 2, а затем я использовать gsoap_2.8.12 генерировать код, используя следующую команду :
wsdl2h -c -o a.h http://localhost:29556/WebService1.asmx?WSDL
soapcpp2 -c -C -I import a.h
step3, создайте пустой проект C в VC, добавьте следующие файлы: soapH.h soapStub.h stdsoap2.h soapC.c soapClient.c stdsoap2.c
step4, конфиг папки, и создать новый класс:
#include <stdio.h>
#include "WebService1Soap.nsmap";
void main()
{
struct soap soap;
int ret;
struct _ns1__HelloWorld hello;
struct _ns1__HelloWorldResponse respHello;
int arg1, arg2;
soap_init(&soap);
hello.a = 2;
hello.b = 3;
ret = soap_call___ns1__HelloWorld(&soap, NULL, NULL, &hello, &respHello);
if (ret == SOAP_OK)
{
printf("return :%s", respHello.HelloWorldResult);
}
else
{
printf("error :%d", ret);
}
getchar();
}
Проблема: возвращаемое значение "0,0", как мы ожидаем, что это должно быть "2,3" , Скажите, пожалуйста, что я пропустил? благодаря!
Отлично. Спасибо, тимил. Использование XmlSerializerFormat (...) Я возвращаюсь к версии gSOAP 2.8.12_2 без проблем, RPC подходит для меня – dzzunga