PHP SOAP Web服务非wsdl模式无法正常工作,“无法连接到主机”

时间:2017-05-11 15:32:11

标签: php web-services soap

我正在尝试创建一个返回简单消息的简单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_2SOAP_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());

0 个答案:

没有答案