2013-05-11 64 views
0

我有問題在我的gsoap客戶端應用程序中傳遞請求變量。錯誤是分段錯誤(核心轉儲)。如何將輸入傳遞給gsoap客戶端應用程序中的soap_call?

這是我的頭文件:

class _ns1__NewTransactionDataRequest; 
class _ns1__NewTransactionDataResponse; 
class _ns1__GetTransactionResultRequest; 
class _ns1__GetTransactionResultResponse; 

class _ns1__NewTransactionDataRequest 
{ 

public: 

char* UserID 1; 
char* UserPwd 1;  
char* TransID 1;  
char* TransDate 1; 
char* A_NO 1; 
char* B_NO 1; 
char* Denom 1; 
char* TransType 1; 
struct soap *soap ; 
}; 



class _ns1__NewTransactionDataResponse 
{ public: 
char* TransID 1;  
char* ResultCode 1; 
char* ResultDesc 1; 
struct soap *soap ; 
}; 

class _ns1__GetTransactionResultRequest 
{ 

public: 

char* UserID 1; 
char* UserPwd 1;  
char* TransID 1;  
char* TransDate 1; 
char* A_NO 1; 
char* B_NO 1; 
char* Status 1; 
char* Remark 1; 
struct soap *soap       ; 
}; 

class _ns1__GetTransactionResultResponse 
{ 

public: 

char* TransID 1; 
char* ResultCode 1;  
char* ResultDesc 1;  
struct soap *soap ; 
}; 

int __ns1__NewTransactionData(_ns1__NewTransactionDataRequest*  ns1__NewTransactionDataRequest, _ns1__NewTransactionDataResponse* ns1__NewTransactionDataResponse 
); 

int __ns1__GetTransactionResult(_ns1__GetTransactionResultRequest*ns1__GetTransactionResultRequest,_ns1__GetTransactionResultResponse* ns1__GetTransactionResultResponse  
); 

這是客戶端應用程序,我嘗試編譯:

int main(int argc, char **argv) 

{ 

struct soap soap; 
_ns1__GetTransactionResultRequest *ns1__GetTransactionResultRequest; 
_ns1__GetTransactionResultResponse *ns1__GetTransactionResultResponse; 
_ns1__NewTransactionDataRequest *ns1__NewTransactionDataRequest; 
_ns1__NewTransactionDataResponse *ns1__NewTransactionDataResponse; 


(*ns1__GetTransactionResultRequest).UserID = "myuserid"; //<--fail at this line 
(*ns1__GetTransactionResultRequest).UserPwd = "userpwd"; 
(*ns1__GetTransactionResultRequest).TransID = "amwani"; 
(*ns1__GetTransactionResultRequest).TransDate = "2013-09-09 01:01:01"; 
(*ns1__GetTransactionResultRequest).A_NO = "mynumber"; 
(*ns1__GetTransactionResultRequest).B_NO = "yournumber"; 
(*ns1__GetTransactionResultRequest).Status = "success"; 
(*ns1__GetTransactionResultRequest).Remark = "done"; 


printf("Content-type: text/html\r\n\r\n<html><h1>Magic Square of Rank</h1><pre>\n"); 
if (soap_call___ns1__GetTransactionResult(&soap, server, NULL, ns1__GetTransactionResultRequest, ns1__GetTransactionResultResponse)) 
{ 
    soap_print_fault(&soap, stderr); 
    soap_print_fault_location(&soap, stderr); 
} 
else 
{ 
     printf("%s", (*ns1__GetTransactionResultRequest).TransID); 
} 
printf("</pre></html>\n"); 
soap_destroy(&soap); 
soap_end(&soap); 
soap_done(&soap); 
} 

我沒有compilaton期間收到任何錯誤,但很少有人警告:

xpulsaclient.cpp: In function ‘int main(int, char**)’: 
xpulsaclient.cpp:46: warning: deprecated conversion from string constant to ‘char*’ 
xpulsaclient.cpp:47: warning: deprecated conversion from string constant to ‘char*’ 
xpulsaclient.cpp:48: warning: deprecated conversion from string constant to ‘char*’ 
xpulsaclient.cpp:49: warning: deprecated conversion from string constant to ‘char*’ 
xpulsaclient.cpp:50: warning: deprecated conversion from string constant to ‘char*’ 
xpulsaclient.cpp:51: warning: deprecated conversion from string constant to ‘char*’ 
xpulsaclient.cpp:52: warning: deprecated conversion from string constant to ‘char*’ 
xpulsaclient.cpp:53: warning: deprecated conversion from string constant to ‘char*’ 
xpulsaclient.cpp:42: warning: unused variable ‘ns1__NewTransactionDataRequest’ 
xpulsaclient.cpp:43: warning: unused variable ‘ns1__NewTransactionDataResponse’ 
xpulsaclient.cpp:46: warning: ‘ns1__GetTransactionResultRequest’ is used uninitialized in this function 
xpulsaclient.cpp:57: warning: ‘ns1__GetTransactionResultResponse’ may be used uninitialized in this function 

也許我在初始化類中的變量的方式ns1 _GetTransactionResultRequest不正確,導致分段錯誤?誰能幫我?我一直堅持在這一點上2天....謝謝!

回答

0

你是對的 - 你沒有初始化ns1__GetTransactionResultRequest(或任何其他指針)。你聲明的變量是指針,但它們從來沒有被分配給一個新的對象。您可以實例化對象,也可以在堆棧中聲明變量。

我在另一個回覆中發佈了一個簡單的gSOAP客戶端應用程序。它包括分配給gSOAP請求對象的屬性,這應該對你有幫助。

例如:making a web services query using gSoap with query arguments

相關問題