也许任何人都可以帮助构建 PHP 肥皂请求。服务器是接受查询的 C++ API。我请求了正确的 XML 代码,但对如何做有点困惑。
这里是:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetSessionKey xmlns="http://tempuri.org/">
<request xmlns:a="http://schemas.datacontract.org/2004/07/Core.WcfExtenssions" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:MethodName i:nil="true"/>
<a:Password i:nil="true"/>
<a:RequestData xmlns:b="http://schemas.datacontract.org/2004/07/MotorServices.MotorDataTransferObjects.Args">
<b:Password>PASSWORD</b:Password>
<b:UserName>USERNAME</b:UserName>
</a:RequestData>
<a:RequestID>eb8b6fe8-2ef3-4b97-bf11-26a733e13158</a:RequestID>
<a:Timestamp>2013-04-19T12:35:50.395084+02:00</a:Timestamp>
<a:UserName i:nil="true"/>
</request>
</GetSessionKey>
</s:Body>
</s:Envelope>
这是我的例子,我是如何做到的。简单的代码,但服务器返回错误“对象引用未设置为对象的实例”。
try {
$ServiceClient = new SoapClient(URL,
array(
'trace' => 1,
'connection_timeout' => 20,
'timeout' => 20
));
$arguments = array(
'request' => array(
'RequestData' => array(
'Password' => PASS,
'UserName' => USER
)
)
);
$session = $ServiceClient->__soapCall("GetSessionKey", $arguments);
} catch (SoapFault $soapFault) {
var_dump($soapFault);
}
在 C/C++ 中登录方法如下面的代码所示。该方法用于登录服务并获取会话密钥。我希望创建类似的方法,但我不了解 PHP 中的请求结构。所以我的问题是.. 从上面的 XML 代码的 PHP 中看起来如何正确的请求结构?
public static Guid Login()
{
Response<GetSessionKeyResult> getSessionKeyResult = FamilyInsuranceServiceProxy.FamilyInsuranceServiceWithoutClose.GetSessionKey(new FamilyRequest<GetSessionKeyArgs>()
{ RequestData = new GetSessionKeyArgs() { AgentId = Username, Password = Password } });
CurrentSessionKey = getSessionKeyResult.ResponseData.SessionKey;
return getSessionKeyResult.ResponseData.SessionKey;
}