我正在尝试创建一个返回简单消息的简单PHP Web服务。我在php.ini中启用了SOAP。我收到以下错误:
SoapFault exception:
[HTTP] Could not connect to host in D:\AppServ\www\projectName\SOAPWSTest\client.php:11
Stack trace:
#0 [internal function]: SoapClient->__doRequest('__soapCall('flag', Array)
#2 {main}string(494) " "
第11行对应__soapCall
。 __getLastRequest
什么都不返回。我尝试将soap_version
设置为SOAP_1_2
或SOAP_1_1
无效。我必须将connection_timeout
设置为1
,因为如果没有,浏览器将永远执行超时并返回相同的消息。我不知道我做错了什么。防火墙和诸如此类可能不是问题,因为项目的其他部分工作正常。
我的一个猜测是命名空间是错误的,但我还没有找到关于命名空间如何工作的简单明了的解释。另外,我尝试过的所有简单的Web服务示例都给了我同样的问题,这让我觉得这是一种配置问题。
代码如下:
服务器
<?php
function flag(){
return "<img src='http://usa.fmcdn.net/data/flags/w580/ga.png' alt='Georgia'>";
}
$server = new SoapServer(null, array('uri' => "http://localhost:81/projectName/SOAPWSTest/"));
$server->addFunction('flag');
$server->handle();
客户端:
<?php
print "<h1>SOAP Client</h1>";
print "<h2>Echo Web Service</h2>";
$client = new SoapClient(null, array(
'connection_timeout' => 1,
'trace' => TRUE,
'exceptions' => FALSE,
'location' => "http://localhost:81/projectName/SOAPWSTest/server.php",
'uri' => "http://localhost:81/projectName/SOAPWSTest/"
));
print $client->__soapCall("flag", array(null));
print "</br></br>Last request:</br></br>" . var_dump($client->__getLastRequest());