php专区

 首页 > php专区 > PHP应用 > 常用功能 > php中nusoap调用java axis2发布的webservice - php高级应用

php中nusoap调用java axis2发布的webservice - 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,这些软件随时都在更......

php中nusoap调用java axis2发布的webservice

调用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(),代码如下:

  1. package Hi; 
  2. publicclass sayHi { 
  3.   public String sayHello(String user,String info) { 
  4.     return"Hello, My Friend "+ user + info; 
  5.   } 

二、编写php客户端,调用axis2发布的webservice

2.1 下载nusoap.rar,将解压出来的lib文件夹添加到工程

2.2 编写客户端php,内容如下,代码如下:

  1. require_once ("./lib/nusoap.php"); 
  2. // 要访问的webservice路径 
  3. $NusoapWSDL="http://localhost:8080/axis2/services/sayHi?wsdl"
  4. // 生成客户端对象 
  5. $client = new nusoap_client($NusoapWSDL); 
  6. //$client->soap_defencoding    =    'UTF-8';    
  7. //$client->decode_utf8    =    false; 
  8. // 设置参数(注意:PHP只能以'数组集'方式传递参数) 
  9. $param = array'user' => '国假不旅游 '
  10. 'info' => ' Welcome to my home!'); 
  11. // 调用远程方法 'sayHello'为服务中的方法名 
  12. //'http://Hi'为wsdl文件中targetNamespace的值 
  13. $result = $client->call('sayHello'$param,'http://Hi'); 
  14. // 显示执行结果 
  15. if (!$err=$client->getError()){ 
  16. //开源代码phpfensi.com 
  17. echo $result;     
  18. }else{   
  19. echo $err;   
  20. }   
  21. ?> 

三、执行结果为:

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,因此,我们需要设置.

分享到:
使用php创建word文档的例子 - php高级应...
使用php创建word文档的例子 下面来看一个使用php创建word文档的例子的,创建word文件处理类非常的简单,我们只要加载起来然后创建类再生成就可以了,例子代码如下:   直接用php创建word文档,如果你打开word.doc,看到了这里的介绍,则说明word文档创建成功了,不论是在什么操作系统下,使...
php模仿百度spider蜘蛛爬虫程序例子 - ph...
php模仿百度spider蜘蛛爬虫程序例子 下面来看一个php模仿百度spider蜘蛛爬虫程序例子,这个代码写得比较高级了我就不分析了,大家有需要的可以进入参考一下吧. 自己用PHP写了个爬虫,基本功能已经实现,有兴趣的可以试试 脚本缺点:1.未对静态页面进行去重处理,2.未对页面内js操作后的结果进行处...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……