编程回忆之Android回忆(Android 连接到webservice)

Android连接到webservice详解

Android 连接到webservice 

当开发app的时候,遇到客户给的服务器端是只提供webservice服务时,应该如何与之交互。

一、什么是webservice

简单说, WebService就是一些站点开放一些服务出来, 也可以是你自己开发的Service, 也就是一些方法, 通过URL,指定某一个方法名,发出请求,站点里的这个服务(方法),接到你的请求,根据传过来的参数,做一些处理, 然后把处理后的结果以XML形式返回来给你,你的程序就解析这些XML数据,然后显示出来或做其它操作.
举个例子: 很多大的站点提供有天气预报的WebService,只要你发出请求过来,它就返回天气预报的数据,然后你把结果显示在自己的程序上.

二、Webservice的基础知识点

 1.XML:描述数据的标准方法.
  2.SOAP:表示信息交换的协议.
  3.WSDL:Web服务描述语言.

  • XML

   可扩展的标记语言(XML)是Web service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。

  • SOAP

  SOAP是web service的标准通信协议,SOAP为simple object access protocoll的缩写,简单对象访问协议. 它是一种标准化的传输消息的XML消息格式。

  • WSDL

   WSDL的全称是web service Description Language,是一种基于XML格式的关于web服务的描述语言。其主要目的在于web service的提供者将自己的web服务的所有相关内容,如所提供的服务的传输方式,服务方法接口,接口参数,服务路径等,生成相应的完全文档,发布给使用者。使用者可以通过这个WSDL文档,创建相应的SOAP请求消息,通过HTTP传递给webservice提供者;web服务在完成服务请求后,将SOAP返回消息传回请求者,服务请求者再根据WSDL文档将SOAP返回消息解析成自己能够理解的内容。

三、Webservice连接过程

Web Service本身其实是在实现应用程序间的通信。我们现在有两种应用程序通信的方法:RPC远程过程调用 和消息传递。使用RPC的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。

四、Webservice的建立(Java版本)

具体细节请移转:http://blog.youkuaiyun.com/flightme/article/details/6977191

五、Webservice的连接(Android客户端)

当android连接到webservice端时,我们需要一个叫做ksoap2的包。

下载地址:http://download.youkuaiyun.com/detail/stop_pig/7058589

下面是实际工作当中的一部分代码,谨供参考。

 

package com.example.test;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

public class WebService {

	private String NameSpace = "http://LxposWeb.org/";// Webservice命名空间

	private String url = "http://192.168.1.120:2608/LxposWebServices.asmx";// Webservice地址

	/**
	 * 连接Webservice,传入参数,返回数据
	 * 
	 * @param param
	 *            传入参数
	 * @param MethodName
	 *            方法名
	 * */
	public String GetConXml(String param, String MethodName) {

		String soapAction = NameSpace + MethodName;// 方法地址
		String result = "";// 结果

		try {

			SoapObject request = new SoapObject(NameSpace, MethodName);// 初始化Soap
			request.addProperty("sqlstr", param);// 添加参数
			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
					SoapEnvelope.VER11);
			envelope.dotNet = true;
			envelope.setOutputSoapObject(request);
			HttpTransportSE ht = new HttpTransportSE(url);
			ht.call(soapAction, envelope);
			if (envelope.getResponse() != null) {
				SoapPrimitive response = (SoapPrimitive) envelope.getResponse();// 返回数据
				result = response.toString();// 获取数据字符串
			}
		} catch (Exception e) {
			result = e.getMessage();
		}
		return result;
	}
}


备注:记得在AndroidMainifest.xml中增加允许使用网络选项(在结束标签之后>):

 <uses-permission android:name="android.permission.INTERNET" />

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值