效益型网络营销方案
当前位置:新竞争力首页 > 公司博客首页 > 周钟的博客
PHP调用webService传递参数问题
最近一个项目,咱们的开发小团队需要用到webService,同事很快就架设好了 webService的服务器端,平台是用.NET(C#),我这边是用php调用。网上搜索到方法,开始都进行得比较顺利,由于是第一次用webService,看到活生生的数据展示出来,着实兴奋了一把,但是紧接而来的一个问题困扰了我不少时间,服务器端需要传四个参数,其中两个是.NET的out型,这两个可以通过数组自动返回值(PHP确实很强大),但是另外两个中的一个始终传不进去,让同事那边配合着修改webService服务程序也还是不行。最后通过读取请求代码发现,这个代码并没有出现在请求xml格式中,难道是参数写搞错了?再核对下,"pagesize"被我写成了"pageSize",再运行,终于通过。“细节决定成败,一个大小写也能搞疯人哪”,最后附上webService的服务器代码:

<?php
header("Content-Type: text/html;charset=utf-8");
require_once('lib/nusoap.php');
$client = new soapclient('http://www.xxx.com/webServiceData.asmx?WSDL', true);
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$err = $client->getError();
if ($err) {
 echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
$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 '<h2>Fault</h2><pre>';
 print_r($result);
 echo '</pre>';
}
else {
 // Check for errors
 $err = $client->getError();
 if ($err) {
  // Display the error
  echo '<h2>Error</h2><pre>' . $err . '</pre>';
 }
 else {
  // Display the result
  echo '<h2>Result</h2><pre>';
     print_r($result);
     echo '</pre>';
 }
}

?>

PS:如果加上了
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
这两句返回的仍然是乱码,别忘记页面顶部加上:
header("Content-Type: text/html;charset=utf-8");

发表评论:

    昵称:
    密码:
    标题:
“新竞争力”是深圳市竞争力科技有限公司的注册商标
深圳市竞争力科技有限公司 版权所有
电话:86-755-26502263  Email:info@jingzhengli.cn