所有
我使用下面的代码创建了一个soap服务器。我发现用PHP创建wsdl文档有点困难,所以我决定使用非wsdl模式。
$soapServer = new SoapServer(NULL,array('uri'=>'http://com.test.env',
'encoding'=>'UTF-8'));
$soapServer->addFunction("workprocess_orders_api_add");
$soapServer->addFunction("workprocess_list_api_get_local_name");
$soapServer->handle();
但当我尝试访问这个程序时,它什么也不打印。web浏览器和程序(我使用SoapClient(
$client = new SoapClient(NULL,array('uri'=>'http://com.test.env',
'location'=>'http://localhost/~breeze.kay/ams/workprocess/api/soap/',
'trace'=>1,
'style' => SOAP_DOCUMENT,
'use' => SOAP_LITERAL));
var_dump($client->__call('workprocess_orders_api_add',array())); //print null
var_dump($client->__getFunctions()); //print null
我厌倦了在客户端调用这样的函数:
echo $client->sayHello('test');
我得到错误:
Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in /Users/breeze.kay/Sites/ad-test/soap.php:15
哪里错了?我不知道(代码看起来不错。为什么没有打印?
好的,我试过了。
问题是请求url必须附加?wsdl,如下所示:http://localhost/wbs/api.php?wsdl
但我使用url重写我的网站。重写规则破坏了原始url结构。
顺便问一下,有人知道在哪里谈论soap请求的url规则吗?
我读了一些手册没有找到它。
XML document not found
错误通常发生在php打开之前或关闭标记之后有空白时,请尝试清除空白并进行测试。