最近一个项目,咱们的开发小团队需要用到webService,同事很快就架设好了 webService的服务器端,平台是用.NET(C#),我这边是用php调用。网上搜索到方法,开始都进行得比较顺利,由于是第一次用webService,看到活生生的数据展示出来,着实兴奋了一把,但是紧接而来的一个问题困扰了我不少时间,服务器端需要传四个参数,其中两个是.NET的out型,这两个可以通过数组自动返回值(PHP确实很强大),但是另外两个中的一个始终传不进去,让同事那边配合着修改webService服务程序也还是不行。最后通过读取请求代码发现,这个代码并没有出现在请求xml格式中,难道是参数写搞错了?再核对下,"pagesize"被我写成了"pageSize",再运行,终于通过。“细节决定成败,一个大小写也能搞疯人哪”,最后附上webService的服务器代码:
header("Content-Type: text/html;charset=utf-8");
require_once('lib/nusoap.php');
$client = new soapclient('', true);
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$err = $client->getError();
if ($err) {
echo '
Constructor error
' . $err . '
';
}
$page=5;
$pageSize=50;
$param = array('page'=>$page,'pagesize'=>$pageSize,"","");
$result = $client->call('GetUserDataSetByPage', array('parameters' => $param));
print_r($param);
// Check for a fault
if ($client->fault) {
echo '
Fault
';
print_r($result);
echo '
';
}
else {
// Check for errors
$err = $client->getError();
if ($err) {
// Display the error
echo '
Error
' . $err . '
';
}
else {
// Display the result
echo '
Result
';
print_r($result);
echo '
';
}
}
?>
PS:如果加上了
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
这两句返回的仍然是乱码,别忘记页面顶部加上:
header("Content-Type: text/html;charset=utf-8");
阅读(1138) | 评论(0) | 转发(0) |