android开发调用自定义的webservice

来源:互联网 发布:js 不等于undefined 编辑:程序博客网 时间:2024/05/01 11:00

         在上一篇,我们开发了自定义的service:使用MyEclipse开发webservice,今天我们用android程序调用自定义的webservice接口:

在浏览器输入http://192.168.0.5:8080/TestService/MyServicePort?wsdl

其中MyServicePort是webservice服务器端的sun-jaxws.xml文件中的url-pattern="/MyServicePort"

注意这里的192.168.0.5是我本机的ip地址,需要改为自己的ip地址,如下图:

3.建立android客户端:


点击Add Externl JARS


添加ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar

注意在android客户端调用webservice时涉及到连接网络,所以

需要注意的是:当服务器端返回的是二进制形式的时候,则

SoapObject object = (SoapObject) envelope.getResponse();   

否则

SoapObject object = (SoapObject) envelope.bodyIn;  

当android客户端向androidservice服务端传递方法所需要的多个参数时候:


// 指定WebService的命名空间和调用的方法名    SoapObject rpc = new SoapObject(NAMESPACE, "add");  // 设置需调用WebService接口需要传入的两个参数mobileCode、userId    rpc.addProperty("arg0",Integer.parseInt(one.getText().toString())); rpc.addProperty("arg1",Integer.parseInt(two.getText().toString())); 

1.添加权限:<uses-permission android:name="android.permission.INTERNET"/>

2.新建线程,让那些步骤在新线程中执行

关键代码如下:

//命名空间

String NAMESPACE = "http://webservice.test.liuhang.com/";

//调用的方法名                                                                                                                     String methodName = "sayHello";//endPointString endPoint = "http://192.168.0.5:8080/TestService/MyServicePort?wsdl";// 指定WebService的命名空间和调用的方法名    SoapObject rpc = new SoapObject(NAMESPACE, methodName);  // 设置需调用WebService接口需要传入的两个参数mobileCode、userId    rpc.addProperty("arg0","hahaaa"); // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本    final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);    envelope.dotNet = false;envelope.bodyOut = rpc;    envelope.setOutputSoapObject(rpc);    final HttpTransportSE transport = new HttpTransportSE(endPoint);    <span style="white-space:pre"></span>new Thread(){public void run() {try {    <span style="white-space:pre"></span>// 调用WebService    transport.call(null, envelope);  if(envelope.getResponse()!=null){  // 获取返回的数据    SoapObject object = (SoapObject) envelope.bodyIn;   String result= object.getProperty(0).toString();    Message message = new Message();Bundle bundle = new Bundle();bundle.putString("result",result);<span style="white-space:pre"></span>message.setData(bundle);message.what = 1;handler.sendMessage(message);}  } catch (Exception e) {    <span style="white-space:pre"></span>e.printStackTrace();   }    <span style="white-space:pre"></span>};}.start();

源码下载

0 0
原创粉丝点击