我很难开始通过提供的SOAP Web服务将我的PHP脚本连接到Moodle 2.0。我不太了解SOAP,我想我会简单地连接并从那里开始。但是,我甚至无法联系......
$soap=new SoapClient(
'http://mymoodleserver/webservice/xmlrpc/server.php?wstoken=asdfasdfasdfasdfasdf',
array(
'trace'=>1,
'exceptions'=>true,
'cache_wsdl'=>WSDL_CACHE_NONE
)
);
返回:
致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析WSDL:无法加载...
如果我直接转到此网址,则不会返回任何数据。使用Fiddler查看它显示服务器确实返回Content-Length为0。
我找不到任何关于此的文件......但是documentation for other protocols。
我假设SoapClient期望某些WSDL定义可用的函数。我有一个这些函数和参数的列表(不,谢谢official documentation page)。如何指示SoapClient不要担心WSDL并继续?
我已经检查过Moodle服务器上的PHP错误日志中的错误,并且它显示为干净。
答案 0 :(得分:1)
使用非wsdl模式的方法是将其添加到uri
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
Ofocurse,使用trace然后查找getlastrequest和getlastresponse
$result = $client->SomeFunction();
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
http://www.php.net/manual/en/soapclient.getlastrequest.php
使用xmlspy进行简单的调试。
答案 1 :(得分:0)
关键是错误,所以我开始查看Moodle的文档知道会发生什么,没有WSDL。
查看SoapClient和documentation for Moodle的文档,因为您可以看到Moodle不提供WSDL,因此您需要在non-WSDL mode中使用SoapClient。