我有一个Wordpress应用程序,它使用外部API并通过nussoap客户端请求连接到它。我首先在本地主机WAMP服务器,PHP 7.4中开发了这个,并使其工作,但现在我已经将该项目迁移到一个实时服务器中,并且现在相同的请求不工作。
这是我的代码PHP nussoap客户端代码:
<?php
require_once(dirname(__FILE__) . '/nusoap.php');
ini_set('display_errors','On');
$userID = $_POST['UserId'];
$unitID = $_POST['UnitId'];
$serviceID = $_POST['ServiceId'];
$onlineUserID = $_POST['IdUserOnline'];
$soapClient = new nusoap_client('http://example-request-url.com?wsdl', 'wsdl');
var_dump($soapclient);//returns NULL
$error = $soapClient->getError();
if ($error) {
die("client construction error: {$error}n");
}
$soapClient->soap_defencoding = 'UTF-8';
$soapClient->decode_utf8 = FALSE;
try{
$params = array(
'UserId' => $userID,
'UnitId' => $unitID,
'ServiceId' => $serviceID,
'IdUserOnline' => $onlineUserID
);
//print_r($params);
// array('parameters' => $params)
$response = $soapClient->call('CreateSlip', array('parameters' => $params), '', '', false, true);
if ($soapClient->fault) {
echo 'Error: ';
print_r($response);
}
else{
$error = $soapClient->getError();
if ($error) {
die("client construction error: {$error}n"); //returns "client construction error: wsdl error: Getting http://example-request-url.com?wsdl
//- HTTP ERROR: Couldn't open socket connection to server http://example-request-url.com?wsdl, Error (111): Connection refused
}
}
// $response = $soapClient->__soapCall('CreateSlip', $params);
var_dump($response);//returns "bool(false)"
$json_response = json_encode($response);
echo $json_response;
print_r(json_last_error_msg());
} catch (SoapFault $e){
echo "Error: {$e}";//does not echo
}
?>
我的实时服务器有PHP 8.1,认为这可能是问题,但在更改版本以匹配我的WAMP服务器后,它仍然不起作用。我从API得到的响应是false
,这意味着请求不正确。正如我之前提到的,在WAMP localhost上,这工作得很好,关于我的代码可能出了什么问题,有什么想法吗?
提前感谢。
UPDATE on this.
我的问题是由于发送请求的端口被关闭而引起的。我把这个问题告诉了我的主机公司,他们马上就修好了。