码迷,mamicode.com
首页 > 移动开发 > 详细

android开发调用自定义的webservice

时间:2015-04-04 09:20:12      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:android   webservice   

         在上一篇,我们开发了自定义的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";
//endPoint
String 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();

源码下载

android开发调用自定义的webservice

标签:android   webservice   

原文地址:http://blog.csdn.net/mockingbirds/article/details/44859041

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!