我尝试执行 SOAP 请求,
Could not get any response
错误 SoapClient::__doRequest(): SSL: Connection reset by peer
错误 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
错误 一切就绪,在无 wsdl 模式下尝试 SoapClient,并使用不同的 ssl 验证选项,并在远程服务器上尝试,因此不是互联网连接问题。
这是第 3 点的代码:
$this->client = new \SoapClient($this->wsdl, [
'soap_version' => SOAP_1_1,
'exceptions' => true,
'trace' => true,
'cache_wsdl' => WSDL_CACHE_NONE,
]);
$response = $this->client->__doRequest(trim($xml), $url, 'getReport', SOAP_1_1);
这是第 4 点的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); // both 0 & 1 not works
curl_setopt($ch, CURLOPT_URL, $location);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); // also tries different values
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // here too
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, trim($request));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1); // also not works without this
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // and this
$response = curl_exec($ch);
我能做些什么来更深入地调试这个问题并解决它?
最佳答案
原来, header 值 SOAPAction
需要像这样在额外的转义引用中:
$headers = [
"SOAPAction: \"http://example-url.com\"",
]
关于PHP Soap 问题 : OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 54 或 SSL:对等方重置连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61253596/