• <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)  編輯 收藏 引用
            久久久久亚洲AV片无码下载蜜桃| 欧美熟妇另类久久久久久不卡| 国内精品伊人久久久久av一坑| 精品久久久噜噜噜久久久 | 国产精品久久久久久久久软件| 武侠古典久久婷婷狼人伊人| 综合久久国产九一剧情麻豆| 国产精品久久亚洲不卡动漫| 久久天天日天天操综合伊人av| 精品久久人人爽天天玩人人妻| 久久国产乱子精品免费女| 久久国产精品一区| 亚洲va久久久噜噜噜久久| 亚洲综合久久综合激情久久| 久久精品国产亚洲AV久| 久久中文娱乐网| 国内高清久久久久久| 99久久国产综合精品五月天喷水| 国产免费久久精品99re丫y| 久久久青草久久久青草| 日本强好片久久久久久AAA | 色综合合久久天天给综看| 色综合久久久久综合体桃花网 | 久久精品国产AV一区二区三区| 国内精品久久国产大陆| 国色天香久久久久久久小说| 久久久久久噜噜精品免费直播| 久久99国产精品久久99果冻传媒| 亚洲中文字幕无码久久2017| 久久久久亚洲国产| 久久久这里有精品中文字幕| 久久99精品久久久久久齐齐| 久久久久中文字幕| 国产高潮国产高潮久久久91| 久久国产精品99精品国产987| 91精品国产综合久久久久久| 久久久久久亚洲Av无码精品专口| 精品一二三区久久aaa片| 97久久国产综合精品女不卡 | 国产精品成人99久久久久| 日本精品久久久久中文字幕8 |