
android中调用webservice总结.pdf
10页Android 调用调用调用调用 webservice((((.net))))总结总结总结总结 在做本例中,主要进行了一下几个方面的学习: ? webservice 的学习 ? eclipse 环境下搭建 android ? httpurlconnection 进行客户端与服务器通信方面的学习 ? android 端对读取的数据进行解析 ? android 端对解析后的数据进行显示的过程 下面我们详细讲解这几个方面的过程和遇到的问题 webservice 的学习的学习的学习的学习 开始不懂什么是 webservice ,在网上查阅了相关的信息之后,感觉webservice 就是提供服务接口的, 我们发布一个 web 服务, 别人可以通过各种方式了获取我们服务我们只给用户(客户端)服务的说明(地址,需要传递的参数,服务的函数名称等等) ,用户只需根据相应的要求进行调用即可,相对较透明Web 服务典型的是使用 xml 进行通讯,用户提出服务的要求,此要求被封装到一个 xml 文件中传输到服务器端,然后服务器端进行解析,获得客户端想要的服务信息,然后调用相应的服务接口获得数据,获得的数据封装成 xml 的数据流然后被传输到客户端,客户端接受到此数据流后应进行相应的解析(android 中建议用 xmlpull 进行解析) 。
对 webservice 暂时了解这些 下面介绍相关的细节信息 首先是 webservice 的创建,vs2010 中没有直接创建 webservice 的项, 但是我们可以间接地进行创建(可以选择 ASP.NET Empty Web Site/Application 模板,建立空的 Web 网站或项目,在添加新项窗口中,你依然会发现 Web Service 这个项模板),从而看出已经不建议使用 ASP.NET Web Services 建立新的服务,WCF 服务应该是新项目的首选(不熟悉 嘿嘿) 创建好 webservice 以后,我们就可以看到项目中有一个后缀为.xsmx 的文件,我们想要的就是这个文件 [WebService(Namespace = “http://tempuri.org/“)] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用ASP.NET AJAX 从脚本中调用此Web 服t务请取消对下行的注释 // [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return “Hello World“; } } 这就是我们创建一个新的webservice后系统自动给我们创建的代码。
其中[WebService(Namespace = “http://tempuri.org/“)],namespace我们填写我们发布此服务的服务器的ip地址,如果我发布在172.16.230.50的服务器上,那么我们的namespace为[WebService(Namespace = “http:// 172.16.230.50/“)],为以后客户端调用做好准备另一个方面是[WebMethod],添加上次标记之后,则表明次方法是可以对外提供服务的接口我们可以对此函数在Description进行说明:[WebMethod(Description=“…..“)] 下面我们对写好的 web 服务进行发布,发布很简单,安装 IIS 服务器,然后再默认网站上点击右键新建虚拟目录,然后按照步骤进行发布发布好网站之后我们打开我们在别的机器上进行访问,发现不能进行相关服务的调用,为此我们必须在 web.config 中进行相应的设置: 设置完成之后我们就能进行访问了Webservice 的相关介绍和注意事项就先介绍到这里,下面讲解 httpurlconnection 的相关内容 相关文章推荐: eclipse 环境下搭建环境下搭建环境下搭建环境下搭建 android 搭建 android 的开发环境需要三个开发包:eclipse、jdk、sdk。
三个软件的下载网站: Jdk: Sdk: Eclipse:http://www.eclipse.org/downloads/ 下面我们讲解安装的过程 首先解压 eclipse 直接使用即可 Jdk 的安装网上也有介绍 Sdk 安装到和 eclipse 同一个目录下 然后对 eclipse 进行配置: 打开 Eclipse 选择 help->Install New SoftWare 进入如下界面,名字随意,我写的是 android, 网址输入: https://dl- (如果出错,请将 https改成 http) 点击 Next 进入下面界面 Android DDMS 和 Android Development Tools 是必选,我为了方便全选了 接下来 Next->Next->接受协议并 Next 进入如下界面 安装完成后出现如下界面,选 Yes 重启 Eclipse 即可 SDK 配置:在刚才安装 SDK 的文件夹里找到 SDK Manager 并运行,如下图 为了快点安装完我们先只安装一个版本的 SDK(Android 2.2)挺快的,其他的有时间再安装,方法跟这个是一样的,因为要安装,一次性安装太多版本估计要四五个小时。
另外需要提醒的是点击进度条右端小方块(安装过程中它是红色的)可以停止下载,并将已下载的包安装完,下次可以接着下 至此,我们已经完成了对 eclipse 的相关配置 Httpurlconnection 在 eclipse 中配置完 android 的开发环境之后我们就可以开始进行 android 开发了在此我们只进行 android 客户端与 webservice 利用 httpurlconnection 进行通讯的讲解 Httpurlconnection 实现 SOAP 调用的过程概述如下: 1、 创建一个 SOAP 的请求包,xml 格式的字符流 2、 SOAP 的调用就是一个 Http 请求, 通过 httpurlconnection 类进行相应的属性设置 3、 通过httpurlconnection类的getOutPutStream方法获得一个获得一个输出流,然后将 SOAP 请求包放到此输出流中 4、 通过httpurlconnection类的getResponseCode方法获得服务器的相应代码,如果相应代码为 200 则代表此请求成功,否则表示失败可以通过getErrorStream 来了解具体的详情。
5、 通过 Httpurlconnection 类的 getInPutStream 方法获得一个输入流,然后又此输入流获得服务器的返回结果 1、、、、创建一个创建一个创建一个创建一个 SOAP 的请求包的请求包的请求包的请求包,,,,xml 格式的字符流格式的字符流格式的字符流格式的字符流 我们可以访问我们要访问的服务,然后查看相应的信息其中有下面的类似说明: SOAP 1.2 The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values. POST /project/projectStatic.asmx HTTP/1.1 Host: 172.16.230.50 Content-Type: application/soap+xml; charset=utf-8 Content-Length: length 我们只需要 copy 红色的部分然后放到一个 xml 中即可则此文件就是 SOAP 的请求包 创建完成 SOAP 的请求包我们把它放到什么地方呢,两个方法:一是放到 src 根目录下,二是放到与读取此文件的类相同的包中。
对于两种方式的数据读取我 们采用以下方式: Java 中的 getResourceAsStream 有以下几种: ? Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从 ClassPath 根下获取其只是通过 path 构造一个绝对路径,最终还是由 ClassLoader 获取资源用于第二种 ? Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath 根下获取,path 不能以’/'开头,最终是由 ClassLoader 获取资源,用于第一种 2、、、、想关的具体代码想关的具体代码想关的具体代码想关的具体代码 InputStream in = NumberService.class.getResourceAsStream(“projectstatic.xml“); // 获取SOAP请求包中的相关信息 byte[] data = StreamUtil.load(in); String content = new String(data); // 对请求包中的信息进行处理,转化为String形式 // 创建连接对象, 设置请求头, 按照Webservice服务端提供的要求来设置 URL url = new URL(“http://172.16.230.50/project/projectStatic.asmx“);// 其中的网址为要访问的服务的网址 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 将URL类型转化为HttpURLConnection类型 conn.setConnectTimeout(1000000); //设置conn的连接超时 conn.setReadTimeout(1000000); //设置conn的读超时 conn.setRequestProperty(“Host“, “172.16.230.50“); //conn.setRequestProperty(“Content-type“, “application/x-java-serialized-object“); conn.setRequestProperty(“Content-Type“, “application/soap+xml; charset=utf-8“); conn.setRequestProperty(“Content-Length“, content.getBytes().length + ““); conn.setRequestMethod(“POST“); // 为请求指定提交数据模式,对于调用Web Service来说请求模式要被设置成POST模式 conn.setUseCaches(false); //post模式下次设置为false // 输出数据 。












