我正在测试我在网站空间上制作的服务器和客户端。
当我尝试调用ServerMap类中定义的简单“testServer”函数时,我得到了 “看起来我们没有XML文档”
...
我在客户端调用了getFunctions,testServer是一个有效的函数。我尝试捕获所有异常,然后调用__getLastResponseHeaders()和__getLastResponse。
头:
string(348) "HTTP/1.1 200 OK
Date: Tue, 23 Jun 2009 19:36:29 GMT
Server: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9
X-Powered-By: PHP/5.2.9
Cache-Control: max-age=1
Expires: Tue, 23 Jun 2009 19:36:30 GMT
Vary: Accept-Encoding
Content-Length: 1574
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
"
响应:
string(1574) "DEBUG HEADER : This is a cached page !
"
如果我查看响应的源html,实际上是:
string(1574) "DEBUG HEADER : This is a cached page !<?xml version="1.0"?>
<A lot of xml that looks pretty much like my WSDL file that my Zend_Soap_AutoDiscover generates>
最近怎么回事?我在网上搜索,我没有找到任何可靠的解决方案。 我之前没有空白..
答案 0 :(得分:0)
如果您要输出到浏览器,它会隐藏xml,因为它位于浏览器中。浏览器忽略了他们没有忽略的标签。
做一个echo htmlentities($ output);看到xml标签。
答案 1 :(得分:0)
不确定您的问题是什么,但我可以使用Zend Framework 1.8x作为Silverlight和WCF的后端SOAP服务,提供一些我知道的代码。这个服务简单需要2个整数,添加它们并返回结果。你可以很简单。
控制器类示例:
class SoapController extends Zend_Controller_Action {
/*
* SOAP server action
*/
public function indexAction() {
$request = $this->getRequest();
if ($request->getParam('wsdl') !== null) {
$wsdl = new Zend_Soap_AutoDiscover();
$wsdl->setClass('SoapMath');
$wsdl->handle();
}
else {
$module = $request->getModuleName();
$controller = $request->getControllerName();
$uri = 'http://' . Zend_Registry::get('fullUrl') . '/' . $module . '/' . $controller . '?wsdl';
$server = new Zend_Soap_Server($uri);
$server->setClass('SoapMath');
$server->handle();
}
exit;
}
}
实际工作由'SoapMath'完成,定义为:
class SoapMath {
public function add($a,$b) {
return ($a + $b);
}
}