加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中nusoap使用java axis2发布的webservice

发布时间:2022-02-10 17:09:21 所属栏目:PHP教程 来源:互联网
导读:调用webservice:开发环境是:Eclipse3.6 (java IDE)+ JDK 1.6 + Tomcat 7.0 + Axis2 1.6 + php 5.2.14 (IDE为eclipse-php-helios-SR1-win32.zip)+ apache2.2.15,这些软件随时都在更新,请读者谷歌百度一下到官网下载。 一、在java端编写服务,并利用axis2发
  调用webservice:开发环境是:Eclipse3.6 (java IDE)+ JDK 1.6 + Tomcat 7.0 + Axis2 1.6 + php 5.2.14 (IDE为eclipse-php-helios-SR1-win32.zip)+ apache2.2.15,这些软件随时都在更新,请读者谷歌百度一下到官网下载。
 
  一、在java端编写服务,并利用axis2发布成服务,本文的服务名为sayHi,里面有一个函数sayHello(),代码如下:
 
  package Hi;
  publicclass sayHi {
    public String sayHello(String user,String info) {
      return"Hello, My Friend "+ user + info;
    }
  }
  二、编写php客户端,调用axis2发布的webservice
 
  2.1 下载nusoap.rar,将解压出来的lib文件夹添加到工程
 
  2.2 编写客户端php,内容如下,代码如下:
 
  <?php
  require_once ("./lib/nusoap.php");
  // 要访问的webservice路径
  $NusoapWSDL="http://localhost:8080/axis2/services/sayHi?wsdl";
  // 生成客户端对象
  $client = new nusoap_client($NusoapWSDL);
  //$client->soap_defencoding    =    'UTF-8';    
  //$client->decode_utf8    =    false;
  // 设置参数(注意:PHP只能以'数组集'方式传递参数)
  $param = array( 'user' => '国假不旅游 ',
  'info' => ' Welcome to my home!');
  // 调用远程方法 'sayHello'为服务中的方法名
  //'http://Hi'为wsdl文件中targetNamespace的值
  $result = $client->call('sayHello', $param,'http://Hi');
  // 显示执行结果
  if (!$err=$client->getError()){
  //开源代码Cuoxin.com
  echo $result;     
  }else{   
  echo $err;   
  }   
  ?>
  三、执行结果为:
 
  Hello,My Friend 国假不旅游 Welcome to my home!
 
  webservice乱码问题:
 
  许多使用NuSoap 调用.NET WebService或J2EE WebService的朋友可能都遇到过中文乱码问题(我用的是PHP调用NuSoap),下面介绍这一问题的出现的原因和相应的解决方法。
 
  NuSoap调用WebService出现乱码的原因:
 
  通常我们进行WebService开发时都是用的UTF-8编码,这时我们需要设置:
 
  $client->soap_defencoding = ‘utf-8′;
 
  同时,需要让xml以同样的编码方式传递:$client->xml_encoding = ‘utf-8′;
 
  至此应该是一切正常了才对,但是我们在输出结果的时候,却发现返回的是乱码.
 
  NuSoap调用WebService出现乱码的解决方法:
 
  实际上,开启了调试功能的朋友,相信会发现$client->response返回的是正确的结果,为什么$result = $client->call($action, array(‘parameters’ => $param)); 却是乱码呢?
 
  研究过NuSoap代码后我们会发现,当xml_encoding设置为UTF-8时,NuSoap会检测decode_utf8的设置,如果为true,会执行 PHP 里面的utf8_decode函数,而NuSoap默认为true,因此,我们需要设置.

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读