myeclipse调用php的webservice

php用nusoap生成webserice,代码如下

 1 <?php
 2     require_once("nusoap/lib/nusoap.php");
 3     $server = new soap_server;
 4     //避免乱码
 5     $server->soap_defencoding = 'UTF-8';
 6     $server->decode_utf8 = false;
 7     $server->xml_encoding = 'UTF-8';
 8     $server->configureWSDL('sayHello');//打开wsdl支持
 9 
10     /*
11        注册需要被客户端访问的程序
12        类型对应值:bool->"xsd:boolean"   string->"xsd:string" 
13                 int->"xsd:int"    float->"xsd:float"
14     */
15     $server->register( 'sayHello',                //方法名
16             array("name"=>"xsd:string"),        //参数,默认为"xsd:string"
17             array("passwd"=>"xsd:string"),      //参数,默认为"xsd:string"
18             array("return"=>"xsd:string") );    //返回值,默认为"xsd:string"
19     
20     //isset 检测变量是否设置
21     $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
22     //service 处理客户端输入的数据
23     $server->service($HTTP_RAW_POST_DATA);
24 
25     /**
26      * 供调用的方法
27      */
28     function sayHello($name,$passwd)
29     {
30         $result = "hello " . $name . " and " . $passwd;
31         return $result;
32     }
33 ?>

 

php测试客户端

 1 <?php
 2 
 3     $client = new SoapClient("http://127.0.0.1/WebService/server.php?wsdl");
 4 
 5     $name = "myName";
 6     $passwd = "myPasswd";
 7 
 8     $result = $client->sayHello($name,$passwd);
 9 
10     var_dump($result);
11 
12 ?>

测试ok,下面测试myeclipse的调用

 

用myeclipse的工程向导作的测试客户端,校验nusoap生成的wsdl报错,测试程序运行也报错;参考网上资料,测试用axis的库可行,以下是代码

 1 import java.net.URL;
 2 
 3 import javax.xml.namespace.QName;
 4 import javax.xml.rpc.ParameterMode;
 5 
 6 import org.apache.axis.client.Call;
 7 import org.apache.axis.client.Service;
 8 import org.apache.axis.encoding.XMLType;
 9 
10 
11 public class AxisClient {
12 
13     private final static String endpoint = "http://127.0.0.1/WebService/server.php?wsdl";
14     public static void main(String[] args) throws Exception {
15         Service service = new Service();
16         Call call = (Call) service.createCall();
17         call.setTargetEndpointAddress(new URL(endpoint));
18         
19         call.setOperationName(new QName("urn","sayHello"));//webService方法名
20 
21         call.addParameter("name", XMLType.XSD_STRING, ParameterMode.IN);//参数key
22         call.addParameter("passwd", XMLType.XSD_STRING, ParameterMode.IN);//参数key
23         
24         call.setReturnType(XMLType.XSD_STRING);
25         String result = (String) call.invoke(new Object[] { "javaName","javaPasswd"});//参数值
26         System.out.println(result);
27     }
28 }

测试成功

你可能感兴趣的:(webservice)