Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198158
  • 博文数量: 99
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1045
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-15 14:24
文章分类
文章存档

2015年(9)

2014年(90)

我的朋友

分类: PHP

2014-10-10 15:36:18

最近一个项目,咱们的开发小团队需要用到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");
阅读(1118) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~