我正在使用c ++中的gsoap包调用webservices并获取响应。 我也必须传递一些标题信息,我不知道该怎么做,因为我的标题是这样的 - / * SOAP标头:* /
struct SOAP_ENV__Header
{
公共:
void *dummy; /* transient */
};
是否有我错过的东西,或者它应该只是这样,我们必须在这里做出改变? 我已经阅读了here一些信息,但我的标题只是假的。
其次,为了进一步调试,我想启用DEBUGS,为此,根据用户指南,我已经取消注释stdsoap2.h中的DEBUG宏并再次使用DEBUG标志构建但是,我无法获得.log文件被创建。有什么想法吗?
迪帕克
答案 0 :(得分:0)
您可以执行类似
的操作soap_init(&mysoap);
mysoap.header = (SOAP_ENV__Header *)soap_malloc(&mysoap, sizeof(SOAP_ENV__Header));
mysoap.header->ns3__MyHeader = (ns3__Header*)malloc(sizeof(ns3__Header));
mysoap.header->ns3__MyHeader->Value = (char*)malloc(10 * sizeof(char));
strcpy(mysoap.header->ns3__MyHeader->Value, str);
答案 1 :(得分:0)
对于休息电话,这是可行的-
#include "json.h"
#include <string.h>
#include "jsonStub.h"
struct Namespace namespaces[] = { {NULL, NULL} };
int main()
{
struct soap *ctx = soap_new1(SOAP_XML_NOTYPE);
soap_init(ctx);
struct value *request = new_value(ctx);
struct value response;
ctx->sendfd = 1;
ctx->http_extra_header = "userName:abcd\r\npassword:xyz";
*string_of(value_at(value_at(request, "add"), "i")) = "10";
*string_of(value_at(value_at(request, "add"), "j")) = "20";
json_write(ctx, request);
printf("\n");
if (json_call(ctx, "endpoint",request, &response))
{
printf( "json call failed " );
soap_print_fault(ctx, stderr);
printf("\n%d", ctx->error);
printf("\n1: SOAP faultcode = %s\n", *soap_faultcode(ctx));
printf("2: SOAP faultstring = %s\n", *soap_faultstring(ctx));
printf("3: SOAP faultdetail = %s\n\n", *soap_faultdetail(ctx));
soap_print_fault_location(ctx, stderr);
}
else
{
printf("Success !!!");
json_write(ctx, &response);
}
soap_destroy(ctx);
soap_end(ctx);
soap_free(ctx);
return 0;
}