使用PHP Soap访问共享主机上的Web服务时出现连接错误

时间:2014-07-11 10:24:25

标签: php soap shared-hosting

我尝试使用PHP和SOAP(确切地说是NuSoap库)访问Web服务,但仍然遇到以下错误:

HTTP Error: Couldn't open socket connection to server http://rsvpdb01/CRMWebService prior to connect(). This is often a problem looking up the host name.

在本地访问此服务时,有必要修改我的hosts文件,将IP地址重定向到&rs; rsvpdb01'位置,但我不确定如何在Web服务器上执行相同操作(或者如果这样可以解决问题)。

我的脚本的基础是:

<?php
// Pull in the NuSOAP code
require_once('nusoap/lib/nusoap.php');
ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);

// Create the client instance
$action_authenticate = array('Action'=> 'http://tempuri.org/ICRMWebServiceAPI/AuthenticateUser');
$client = new SoapClient('http://81.144.199.11/CRMWebService?wsdl',$action_authenticate);
$client->soap_defencoding = 'UTF-8';

// Call the SOAP method
$result = $client->call('AuthenticateUser', array('Username' => 'username', 'Password' => 'password'));

// Display the request and response
echo '<h2>Request</h2>';
echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2>';
echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';

// Check for a fault
if ($client->fault) {
    echo '<p><b>Fault: ';
    print_r($result);
    echo '</b></p>';
} else {

    // Check for errors
    $err = $client->getError();
    if ($err) {
        // Display the error

        echo '<p><b>Error: ' . $err . '</b></p>';
    } else {

        // Display the result
        print_r($result);
    }
}
?>

有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:0)

这里的问题是Web服务指向本地计算机,而我的服务器无法从我需要用于连接的IP地址转换该物理地址。

我不得不在我的托管服务器上请求root访问权限,这样我就可以使用本地机器的IP地址编辑'hosts'文件,这是一个简单的行添加如下:

123.456.5.1 xxxdb01