gSOAP的生成的客戶端的結構的初始化和使用(使用ANSI C綁定)gSOAP的生成的客戶端的結構的初始化和使用
首先,我搜索,雖然也有提出了一些結構初始化解決方案,我沒有直接回答這個問題。
而且,這個問題被簡單地張貼到幫助其他人有類似的問題,因爲我已經制定了解決方案,並because of my newbie status
會後立即at least 8 hours
發佈此之後。
不過,我仍然在評論和編輯的解決方案,我會從那些有更好的解決方案,或在gSOAP的更多的經驗提供非常感興趣......
的情景:
我對soap一般都比較陌生,並且一直使用gSoap生成的客戶端源代碼來構建ANSI C綁定來訪問Web服務。作爲應用程序接口(在soapClient.c中定義)提供的「soap_call__」函數的5個參數多次是複雜的(嵌套的)結構。參數4特別是因爲它是輸入結構,必須在調用應用程序中聲明,初始化,分配和釋放。
例如,給定以下gSOAP的生成原型:
SOAP_FMAC5 int SOAP_FMAC6 soap_call___ns1__SendFile((struct soap *soap, const char *soap_endpoint, const char *soap_action, struct ns3__send *mtdf, struct recv *response)
具有以下結構定義(僅在參數4看)在soapStub.h定義
(注:我已縮短爲了說明的目的,從結構的原始內容中刪除名稱並減少了成員的數量)
struct ns3__send
{
char *wsStDate; /* optional element of type xsd:date */
int *wsStDuration; /* optional element of type xsd:int */
int *wsStFailures; /* optional element of type xsd:int */
char *wsStFileName; /* optional element of type xsd:string */
struct ns3__Param *details; /* optional element of type ns3:Param */
};
struct ns3__Param
{
int __sizeRow; /* sequence of elements <wsStdDetailsRow> */
struct ns3__Row *row; /* optional element of type ns3:xxmtdfws_wsStdDetailsRow */
};
struct ns3__Row
{
int *wsStdSeq; /* optional element of type xsd:int */
char *wsStdStep; /* optional element of type xsd:string */
char *wsStdTestDesc; /* optional element of type xsd:string */
char *wsStdLowLim; /* optional element of type xsd:string */
};
的問題是:
如何此複合物(嵌套的)輸入結構內的構件和指針正確初始化,存儲器分配,分配的值和存儲器釋放,使得它們調用應用內可用?
_within此複雜(嵌套)輸入結構_(來自原始帖子中的問題) – ryyker 2014-06-11 21:28:25
對不起,朋友。沒有看到那部分。 – Vistian 2014-10-19 20:50:51
沒關係。我第一次使用gSoap時,我必須發現要分配什麼以及哪些不能很難分配。 – ryyker 2014-10-19 21:51:35