• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 17,  comments - 2,  trackbacks - 0
            October 09

            gSoap: How to add info to SOAP Header using gSOAP

            gSoap: How to add info to SOAP Header using gSOAP
            There's some misleading info in gSOAP's official documents in SOAP Header Processing Part. 
            This article leads you to the right way and can make your program work.
            The use case is: 
            Client needs to pass user name and password to Server Side to get authenticated.
            The username and password info should be embeded in SOAP Header.
            Steps:
            1. Edit struct SOAP_ENV__Header in soapStub.h file which is generated by gSOAP's soapcpp2 compiler
            Add the neccesary info to this struct 
            For example:
            The original one is:
            struct SOAP_ENV__Header
            {
            public:
             void *dummy; /* transient */
            };
            This should be changed to:
            struct SOAP_ENV__Header
            {
            public:
             void *dummy; /* transient */
             char *username;
             char *password;
            };
            2.  Edit function soap_out_SOAP_ENV__Header in soapC.cpp file which is also generated by gSOAP
            Add statements to serialize those info into SOAP Header.
            For example:
            The original one is:
            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)
            {
                soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Header), type);
                /* transient dummy skipped */
                soap_element_end_out(soap, tag);
                return SOAP_OK;
            }
            This could be changed to:
            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)
            {
                soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Header), type);
                /* transient dummy skipped */
                soap_out_string(soap, "headerNS:username", 1, &(a->username), "");
                soap_out_string(soap, "headerNS:password", 2, &(a->password), "");
                soap_element_end_out(soap, tag);
                return SOAP_OK;
            }
            3. Add the namespace mapping to namespaces array in .nsmap file.
             {"headerNS", "http://customeheader.test.com", NULL, NULL},
             
            4. Set the header before invoking Web Service Method. This part you can also refer to the gSOAP's official documenthttp://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc12.
               struct soap soap; 
               soap_init(&soap);  
            ...
                soap->header = (SOAP_ENV__Header *)soap_malloc(soap, sizeof(SOAP_ENV__Header));
                soap->header->username = (char*)malloc(MAX_NAME_SIZE * sizeof(char));
                soap->header->password = (char*)malloc(MAX_NAME_SIZE * sizeof(char));
                strcpy(soap->header->username, username);
                strcpy(soap->header->password, passwd);
                soap_call_method(&soap, ...);  //the SOAP Header will be in the request
            ...
            5. Compile
            6. Run. 
            The SOAP Message could be
            ... 
            <SOAP-ENV:Envelope xmlns:headerNS="
            http://customeheader.vpamws.com">
            <SOAP-ENV:Header>
            <headerNS:username>admin</headerNS:username>
            <headerNS:password>default</headerNS:password>
            </SOAP-ENV:Header>
            <SOAP-ENV:Body> 
            ... 
            </SOAP-ENV:Body> 
            </SOAP-ENV:Envelope>
             
            Any Questions, Please let me know. Thanks.
             
            -Debora
            posted on 2009-03-28 15:29 BeyondCN 閱讀(1182) 評論(0)  編輯 收藏 引用
            99久久无色码中文字幕| 蜜臀久久99精品久久久久久小说 | 93精91精品国产综合久久香蕉| 久久精品九九亚洲精品天堂| 久久99精品久久久久久久久久| 国产精品久久久久久久久免费| 久久天堂AV综合合色蜜桃网| 久久综合久久自在自线精品自| 99久久久国产精品免费无卡顿| 国产精品成人精品久久久| 久久免费视频一区| 国产精品美女久久久m| 久久99精品久久久久久野外 | 天天综合久久久网| 久久久精品人妻无码专区不卡 | 天天爽天天爽天天片a久久网| 香蕉久久久久久狠狠色| 久久人人爽人人爽人人片AV不| 成人a毛片久久免费播放| 亚洲国产精品成人久久蜜臀| AV无码久久久久不卡网站下载| 亚洲а∨天堂久久精品| 久久久国产乱子伦精品作者 | 久久中文字幕精品| 久久这里只有精品久久| 亚洲国产精品久久电影欧美| 四虎影视久久久免费观看| 久久综合久久综合九色| 久久国产精品77777| 久久亚洲AV成人无码软件| 久久亚洲高清观看| 国产成人精品免费久久久久| 囯产极品美女高潮无套久久久| 一本一道久久a久久精品综合| 91精品国产综合久久久久久 | 99久久伊人精品综合观看| 97视频久久久| 伊人久久无码精品中文字幕| 91精品久久久久久无码| 99久久伊人精品综合观看| 精品久久人人做人人爽综合|