gSOAP: как передать информацию в мыльный заголовок - PullRequest
2 голосов
/ 12 апреля 2010

Я хочу отправить некоторую информацию, например токен аутентификации, внутри заголовка SOAP. Я использую gSOAP / c / Linux. Пожалуйста, помогите мне, как пройти?

Мой 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 */
};

1 Ответ

2 голосов
/ 15 апреля 2010

Извините, что беспокою всех. Я понял. Я сделал это так:

    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 следующим образом:

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