【发布时间】:2012-01-07 13:38:43
【问题描述】:
我定义了一个名为 login 的函数,它应该返回一个令牌。令牌有一个安全 id,它是一个 char*
SOAP_FMAC5 int SOAP_FMAC6 __afas__login(struct soap* env, afas__Login *afas__login, afas__LoginResponse *afas__loginResponse)
{
int ret = ServiceApp::GetServiceApp()->GetServiceImpl()->login(afas__login->user, afas__login->password);
afas__loginResponse->error = soap_new_afas__Error(env, -1);
afas__loginResponse->af__token = soap_new_af__Token(env, -1);
if (ret == sERROR)
{
afas__loginResponse->error->code = afas__ErrorCode__NOTLOGGEDIN;
}
else
{
afas__loginResponse->error->code = afas__ErrorCode__SUCCESS;
afas__loginResponse->af__token->sessionId = soap_strdup(env, soap_int2s(env, ret));
afas__loginResponse->af__token->securityId = soap_strdup(env, afas__login->password);
afas__loginResponse->af__token->userName = soap_strdup(env, afas__login->user);
}
return SOAP_OK;
}
在客户端我有一个电话:
AuthenticationServiceClient a = new AuthenticationServiceClient();
Login login = new Login();
login.user = "test";
login.password = "test";
LoginResponse lr = a.login(login);
string securityId = lr.token.sessionId
问题是 secuirtyId 为空。不知何故,它不会被反序列化。 另一方面,错误代码,它是一个整数,被正确反序列化了。
有什么建议吗?
【问题讨论】:
标签: c# c++ web-services gsoap