gSOAP:如何在soap标头中传递信息 [英] gSOAP: How to pass info inside soap header

查看:339
本文介绍了gSOAP:如何在soap标头中传递信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望在SOAP标头中发送一些信息,例如身份验证令牌.我正在使用gSOAP/c/Linux.请帮助我如何通过?

I wish to send some information like authentication token inside SOAP header. I am using gSOAP/c/Linux. Please help me how to pass?

我的SOAP_ENV__Header看起来像

/* SOAP Header: */
struct SOAP_ENV__Header
{
    struct ns3__Header *ns3__MyHeader;  /* mustUnderstand */
};

ns3__Header看起来像

/* ns3:Header */
struct ns3__Header
{
    char *Value;    /* optional element of type xsd:string */
};

推荐答案

很抱歉打扰大家.我想到了.我做到了:

Sorry for bothering everybody. I figured it out. I did it like:

    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);

但是我不得不抑制MustUnderstand属性,如下所示:

But I had to suppress the MustUnderstand attribute like the following:

SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type)
{
      if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Header), type))
            return soap->error;
      //KNG
      //soap->mustUnderstand = 1;
      if (soap_out_PointerTons3__Header(soap, "ns3:MyHeader", -1, &a->ns3__MyHeader, ""))
            return soap->error;
      return soap_element_end_out(soap, tag);
}

这篇关于gSOAP:如何在soap标头中传递信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆