我正在进行肥皂开发,并使用gsoap生成了源代码,因此,我希望使用声明,因为如果可能的话,会提供它们。
为了在我的应用程序中使用,我得到了以下原型:
soap_call___accounts(struct soap *soap, struct _acnt *acnt, struct _resp *resp);
[acnt
的以下结构定义为:
struct acnt
{
int sizeacnt;
char **acntNum;
};
我的问题是:
[在我的调用应用程序中,我需要使用结构成员acntNum
作为调用函数中acnt
参数的一部分来发送诸如“ 00000123”之类的帐号,但在使用该帐号之前,需要进行初始化。
char **acntNum
如何正确初始化?
另请参见gSOAP 2.8.1 User Guide以获取更多信息。
您的肥皂功能接受多个帐户。因此,您不仅可以为帐户“ 00000123”调用soap函数,而且一次调用也可以使用两个帐户[“ 00000123”,“ 00000456”]。
要进行这项工作,您不仅必须分配内存,而且还必须将size参数设置为您通过的帐户数。例如,您可以执行以下操作:
struct acnt Accounts;
char *AccountToCheck = "00000123";
Accounts.sizeacnt=1;
Accounts.acntNum = malloc(1 * sizeof(*Accounts.acntNum));
Accounts.acntNum[0] = AccountToCheck;
soap_call___accounts(soap, &Accounts, &Response);
char *acntNumP = malloc(strlen("00000123")+1);
strcpy(acntNumP, "00000123");
char ** acntNum = &acntNumP;
当然,需要检查NULL
。