构建PHP soap查询

时间:2013-05-07 09:54:55

标签: php soap soap-client

也许任何人都可以帮助构建PHP soap请求。 Server是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中的请求结构。所以我的问题是..如何在PHP中查找正确的XML代码请求结构?

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;
}

0 个答案:

没有答案