1.服务器端代码(service):<?php
require_once "../views/config.inc"; // 只要加上一个就报错,用include也一样,其中config.inc 文件很简单加上就报错
$soap = new SoapServer(null,array('uri'=>"http://xxxxxx.com.cn/",'encoding'=>'UTF-8'));
$soap->setClass('user');
$soap->handle();
class user
{
protected $Rolse=array();
public function getRoles($UserName,$Password)
{
return $UserName.$Password;
}
}
?>
2、客户端代码:<?php
$roles=array();
try
{
$client = @new SoapClient(null,
array('location' =>"http://localhost/models/userInfo.php",'trace'=>1,'encoding'=>'UTF-8','uri' => "http://xxxxxx.com.cn")
);
$roles=$client->getRoles('test','12345678');
print_r($roles);
}
catch (SoapFault $fault)
{
echo "Error: ",$fault->faultcode,", string: ",$fault->faultstring;
}
?>3.config.inc文件:<?php
global $conf;
$conf['DBUSER']='root';
$conf['DBPWD']='';
$conf['DBHOST']='localhost';
?>
代码就这些,现在出现非常奇怪的问题:只要我在服务器端代码中加上“require_once "../views/config.inc";”在句,调用它就出错:“looks like we got no XML document”,把这行注释掉,程序就正常,一直没有找到解决办法。phpwebservicesoap
require_once "../views/config.inc"; // 只要加上一个就报错,用include也一样,其中config.inc 文件很简单加上就报错
$soap = new SoapServer(null,array('uri'=>"http://xxxxxx.com.cn/",'encoding'=>'UTF-8'));
$soap->setClass('user');
$soap->handle();
class user
{
protected $Rolse=array();
public function getRoles($UserName,$Password)
{
return $UserName.$Password;
}
}
?>
2、客户端代码:<?php
$roles=array();
try
{
$client = @new SoapClient(null,
array('location' =>"http://localhost/models/userInfo.php",'trace'=>1,'encoding'=>'UTF-8','uri' => "http://xxxxxx.com.cn")
);
$roles=$client->getRoles('test','12345678');
print_r($roles);
}
catch (SoapFault $fault)
{
echo "Error: ",$fault->faultcode,", string: ",$fault->faultstring;
}
?>3.config.inc文件:<?php
global $conf;
$conf['DBUSER']='root';
$conf['DBPWD']='';
$conf['DBHOST']='localhost';
?>
代码就这些,现在出现非常奇怪的问题:只要我在服务器端代码中加上“require_once "../views/config.inc";”在句,调用它就出错:“looks like we got no XML document”,把这行注释掉,程序就正常,一直没有找到解决办法。phpwebservicesoap
1. 所有的php文件,包括直接和间接调用到的,注意在之前不能用任何空行或者空格字符,之后不能有任何空行或空白字符.
2. 程序本身的语法错误—-函数参数少了、少了封号、数据库错误等等的错误,而未使用异常处理来抓住这些错误。
3. 人为的返回了非XML标准的数据,如echo了一个非XML标准字符串等等。上面是复制的
<?php
global $conf;
$conf['DBUSER']='root';
$conf['DBPWD']='';
$conf['DBHOST']='localhost';
?>
global $conf;
$conf['DBUSER']='root';
$conf['DBPWD']='';
$conf['DBHOST']='localhost';以 ANSI 保存
这些我都做过了,没有用。
to:happytonice
不引用,直接放在里面是可以的。但是不引用不行呀,还有其他好多单独的数据库操作类呢。
to:xuzuning
以 ANSI 保存也不行。哎,php写webservice伤不起呀,太蛋疼了。用java和.net 那会有这么低级的错误呀?那位大神遇到过这种问题?拜托了。
环境是:windows 2003 + apache2.2.22 + php5.4.3 +mysql5.5.24,对了这些都是通过wampserver2.2 集成的。
还是版主xuzuning厉害,所有要引用的文件都要以 “ANSI” 编码保存,服务器端代码和客户端代码可以用“UTF-8”编码保存;或所有文件都以“ANSI”编码保存,就不会错问题。血的教训呀,本以为我要显示中文所以把所有代码文件都以“UTF-8”格式来保存,结果害我瞎忙了两天。
这只是有 BOM 头的原因,只要保存为无BOM头的utf-8就可以了而 ANSI 是没有 BOM 头的,所以如果程序中没有直接书写汉字时,保存为 ANSI 就没有问题了