我有以下要求我可以与邮递员一起成功测试的要求:
curl -X POST \
'https://dig-stage.crane.aero/craneota/CraneOTAService?wsdl=' \
-H 'Content-Type: text/xml' \
-H 'Postman-Token: 85f5fd96-5040-497e-9578-02dc63d91267' \
-H 'cache-control: no-cache' \
-d '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:impl="http://impl.soap.ws.crane.hititcs.com/">
<soapenv:Header/>
<soapenv:Body>
<impl:GetAirPortMatrix>
<AirPortMatrixRequest>
<clientInformation>
<clientIP>127.0.0.1</clientIP>
<member>false</member>
<password>xxxxxx</password>
<preferredCurrency>xxx</preferredCurrency>
<preferredLanguage>xx</preferredLanguage>
<userName>xxxxxx</userName>
</clientInformation>
</AirPortMatrixRequest>
</impl:GetAirPortMatrix>
</soapenv:Body>
</soapenv:Envelope>'
现在我想使用PHP SOAP客户端执行从我的控制器,同样的要求:
$client = new SoapClient("https://dig-stage.crane.aero/craneota/CraneOTAService?wsdl");
$response = $client->__soapCall("GetAirPortMatrix", ["AirportMatrixRequest" => [
'clientIP' => '127.0.0.1',
'member' => false,
'password' => 'xxxxxx',
'preferredCurrency' => 'xxx',
'userName' => 'xxxxxx'
]]);
但是我不断收到服务器错误:
ERR_INVALID_REQUEST : Client information and Request object must be set properly
在这一点上,我确定我没有像在Postman中那样正确地在PHP中形成请求。
答案 0 :(得分:1)
如果您不确定要形成一个有效的请求,请使用WSDL to PHP生成器。使用这种类型的生成器将带您进入一个PHP SDK,其中包含与请求和响应数据相匹配的类以及用于发送请求的类。然后,您只需要实例化对象,然后将请求数据对象传递到轻松允许使用OOP方法发送请求和处理响应的类即可。此外,您将使用PhpStorm或Eclipse PDT等IDE进行完全自动补全。
尝试PackageGenerator项目。