如何打印 SOAP 请求?

Jer*_*ire 5 php api debugging soap

我正在尝试发送 SOAP 请求,但收到一条错误消息,告诉我某些参数无效。这是代码:

\n\n
$client = new SoapClient('https://live.domainbox.net/?WSDL', array('soap_version' => SOAP_1_2));\n$params = array(\n    'AuthenticationParameters' => array(\n        'Reseller' => 'reseller',\n        'Username' => 'username',\n        'Password' => 'password'\n    ),\n    'CommandParameters' => array(\n        'DomainName' => 'mydomain.com',\n        'LaunchPhase' => 'GA'\n    )\n);\n\n$result = $client->CheckDomainAvailability($params);\nprint_r($result);\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是错误消息:

\n\n
stdClass Object\n(\n    [CheckDomainAvailabilityResult] => stdClass Object\n        (\n            [ResultCode] => 201\n            [ResultMsg] => Authentication Failed: Invalid Authentication Parameters\n            [TxID] => xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx\n            [AvailabilityStatus] => 3\n            [AvailabilityStatusDescr] => ErrorOccurred\n            [LaunchPhase] => GA\n            [DropDate] => \n            [BackOrderAvailable] => \n        )\n\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想查看发送到服务器的请求以确保其格式正确。

\n\n

以下是它需要如何格式化:

\n\n
<soap12:Envelope xmlns:xsi=\xe2\x80\x9dhttp://www.w3.org/2001/XMLSchema-instance\xe2\x80\x9d\nxmlns:xsd=\xe2\x80\x9dhttp://www.w3.org/2001/XMLSchema\xe2\x80\x9d xmlns:soap12=\xe2\x80\x9dhttp://www.w3.org/2003/05/\nsoap-envelope\xe2\x80\x9d>\n<soap12:Body>\n    <CheckDomainAvailability xmlns=\xe2\x80\x9dhttps://live.domainbox.net/\xe2\x80\x9d>\n        <AuthenticationParameters>\n            <Reseller>myreseller</Reseller>\n            <Username>myuser</Username>\n            <Password>mypassword</Password>\n        </AuthenticationParameters>\n        <CommandParameters>\n            <DomainName>checkadomain.co</DomainName>\n            <LaunchPhase>GA</LaunchPhase>\n        </CommandParameters>\n    </CheckDomainAvailability>\n</soap12:Body>\n</soap12:Envelope>\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何打印已发送到服务器的请求?

\n\n

我已经尝试过:

\n\n
echo $client->__getLastRequest();\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我什么也没得到,即使在页面的源代码中也是如此。

\n\n

谢谢

\n

pun*_*und 5

添加跟踪选项:

$client = new SoapClient('https://live.domainbox.net/?WSDL', array('trace' => true, 'soap_version' => SOAP_1_2));
Run Code Online (Sandbox Code Playgroud)

然后__getLastRequest()应该可以工作。