`
streamh
  • 浏览: 8320 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android网络应用接口

阅读更多
转自:http://hi.baidu.com/honey_lonely/blog/item/fa10b003e2b3638ce950cd1c.html

1. 概要

      本文主要介绍在Android平台上开发网络应用的一些常用接口。

2. Android平台上可以使用的几种网络接口

Android平台的网络应用绝大部分都是基于Java的编程接口的,也就是说我们开发类似的运用的时候可以有多种选择,比J2me确实好多了。

2.1. 标准Java接口

java.net.*下面提供了访问 HTTP 服务的基本功能。使用这部分接口的基本操作主要包括:

·         创建 URL 以及 URLConnection / HttpURLConnection 对象

·         设置连接参数

·         连接到服务器

·         向服务器写数据

·         从服务器读取数据

import java.io.InputStream;  

        import java.io.OutputStream;  

        import java.net.URL;  

        import java.net.URLConnection;  

        import java.net.HttpURLConnection;  

 

        try {  

            // 创建一个 URL 对象  

            URL url = new URL(your_url);  

 

            // 创建一个 URL 连接,如果有代理的话可以指定一个代理。  

            URLConnection connection = url.openConnection(Proxy_yours);  

            // 对于 HTTP 连接可以直接转换成 HttpURLConnection,  

            // 这样就可以使用一些 HTTP 连接特定的方法,如 setRequestMethod() 等  

            //HttpURLConnection connection =  

               (HttpURLConnection)url.openConnection(Proxy_yours);  

 

            // 在开始和服务器连接之前,可能需要设置一些网络参数  

            connection.setConnectTimeout(10000);  

            connection.addRequestProperty("User-Agent",  

                 "J2me/MIDP2.0");  

 

            // 连接到服务器  

            connection.connect();  

 

            // 往服务器写数据,数据会暂时被放到内存缓存区中  

            // 如果仅是一个简单的 HTTP GET,这一部分则可以省略  

            OutputStream outStream = connection.getOutputStream();  

            ObjectOutputStream objOutput = new ObjectOutputStream(outStream);  

            objOutput.writeObject(new String("this is a string..."));  

            objOutput.flush();  

 

            // 向服务器发送数据并获取应答  

            InputStream in = connection.getInputStream();  

 

            // 处理数据  

            ...  

 

        } catch (Exception e) {  

            // 网络读写操作往往会产生一些异常,所以在具体编写网络应用时  

            // 最好捕捉每一个具体以采取相应措施  

        } 

2.2. Apache接口

Apache HttpClient 是一个开源项目,弥补了 java.net.* 灵活性不足的缺点,为客户端的HTTP编程提供高效、最新、功能丰富的工具包支持。Android 平台引入了 Apache HttpClient 的同时还提供了对它的一些封装和扩展,例如设置缺省的HTTP超时和缓存大小等。早期的 Android 曾同时包括 Commons HttpClient (org.apache.commons.httpclient.*) 和 HttpComponents (org.apache.http.client.* ),不过当前版本 (1.5) 中开发者只能使用后者,也就是说类似以下的一些类:

使用这部分接口的基本操作与 java.net.* 基本类似,主要包括:

·         创建 HttpClient 以及 GetMethod / PostMethod, HttpRequest 等对象

·         设置连接参数

·         执行 HTTP 操作

·         处理服务器返回结果

import org.apache.http.HttpEntity;  

       import org.apache.http.HttpHost;  

       import org.apache.http.HttpResponse;  

       import org.apache.http.auth.AuthScope;  

       import org.apache.http.auth.UsernamePasswordCredentials;  

       import org.apache.http.client.methods.HttpGet;  

       import org.apache.http.conn.params.ConnRoutePNames;  

       import org.apache.http.params. HttpConnectionParams;  

       import org.apache.http.client.params. HttpClientParams;  

 

       try {  

           // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的)  

           HttpParams params = new BasicHttpParams();  

 

           // 设置连接超时和 Socket 超时,以及 Socket 缓存大小  

           HttpConnectionParams.setConnectionTimeout(params, 20 * 1000);  

           HttpConnectionParams.setSoTimeout(params, 20 * 1000);  

           HttpConnectionParams.setSocketBufferSize(params, 8192);  

 

           // 设置重定向,缺省为 true  

           HttpClientParams.setRedirecting(params, true);  

 

           // 设置 user agent  

           HttpProtocolParams.setUserAgent(params, userAgent);  

            

           // 创建一个 HttpClient 实例  

           // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient  

           // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient  

           HttpClient httpClient = new DefaultHttpClient(params);  

 

           // 创建 HttpGet 方法,该方法会自动处理 URL 地址的重定向  

           HttpGet httpGet = new HttpGet ("http://www.test_test.com/");  

 

           HttpResponse response = client.execute(httpGet);  

           if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {  

               // 错误处理,例如可以在该请求正常结束前将其中断  

               httpGet.abort();  

           }  

 

           // 读取更多信息  

           Header[] headers = response.getHeaders();  

           HttpEntity entity = response.getEntity();  

           Header header = response.getFirstHeader("Content-Type");  

       } catch (Exception ee) {  

           //  

       } finally {  

           // 释放连接  

           client.getConnectionManager().shutdown();  

       } 

import org.apache.http.HttpEntity;

        import org.apache.http.HttpHost;

        import org.apache.http.HttpResponse;

        import org.apache.http.auth.AuthScope;

        import org.apache.http.auth.UsernamePasswordCredentials;

        import org.apache.http.client.methods.HttpGet;

        import org.apache.http.conn.params.ConnRoutePNames;

        import org.apache.http.params. HttpConnectionParams;

        import org.apache.http.client.params. HttpClientParams;

        try {

             // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的)

            HttpParams params = new BasicHttpParams();

            // 设置连接超时和 Socket 超时,以及 Socket 缓存大小

            HttpConnectionParams.setConnectionTimeout(params, 20 * 1000);

            HttpConnectionParams.setSoTimeout(params, 20 * 1000);

            HttpConnectionParams.setSocketBufferSize(params, 8192);

            // 设置重定向,缺省为 true

            HttpClientParams.setRedirecting(params, true);

            // 设置 user agent

           HttpProtocolParams.setUserAgent(params, userAgent);

          

            // 创建一个 HttpClient 实例

            // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient

            // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient

            HttpClient httpClient = new DefaultHttpClient(params);

            // 创建 HttpGet 方法,该方法会自动处理 URL 地址的重定向

            HttpGet httpGet = new HttpGet ("http://www.test_test.com/");

            HttpResponse response = client.execute(httpGet);

            if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {

                // 错误处理,例如可以在该请求正常结束前将其中断

                httpGet.abort();

            }

            // 读取更多信息

            Header[] headers = response.getHeaders();

            HttpEntity entity = response.getEntity();

            Header header = response.getFirstHeader("Content-Type");

        } catch (Exception ee) {

            //

        } finally {

            // 释放连接

            client.getConnectionManager().shutdown();

        }

      以下例子以 HttpGet 方式通过代理访问 HTTPS 网站:

try {  

            HttpClient httpClient = new HttpClient();  

 

            // 设置认证的数据  

            httpClient.getCredentialsProvider().setCredentials(  

                    new AuthScope("your_auth_host", 80, "your_realm"),     

                    new UsernamePasswordCredentials("username", "password"));  

 

            // 设置服务器地址,端口,访问协议  

            HttpHost targetHost = new HttpHost("www.test_test.com", 443, "https");  

 

            // 设置代理  

            HttpHost proxy = new HttpHost("192.168.1.1", 80);  

            httpClient.getParams().setParameter  

                 (ConnRoutePNames.DEFAULT_PROXY, proxy);     

 

            // 创建一个 HttpGet 实例  

            HttpGet httpGet = new HttpGet("/a/b/c");  

 

            // 连接服务器并获取应答数据  

            HttpResponse response = httpClient.execute(targetHost, httpGet);  

 

            // 读取应答数据  

            int statusCode = response.getStatusLine().getStatusCode();  

            Header[] headers = response.getHeaders();  

            HttpEntity entity = response.getEntity();  

        } catch (Exception ee) {  

            // 
分享到:
评论

相关推荐

    android 网络接口返回值查看,检查接口

    在Android开发中,网络接口是应用与服务器交互的重要方式,用于获取或发送数据。本教程将详细介绍如何在Android中查看和检查网络接口的返回值,以及如何通过HTTP POST请求发送参数。 首先,我们需要理解Android中的...

    android网络开发与应用实战详解源码

    《Android网络开发与应用实战详解》一书深入浅出地介绍了Android系统中如何实现网络通信,并提供了丰富的源码示例。这本书涵盖的内容广泛,包括基础的HTTP请求、数据解析、网络状态管理以及高级的WebSocket通信和...

    Android Studio调用RestfulWCF接口

    Android Studio 调用 Restful WCF 接口需要使用 HttpURLConnection 和线程来实现异步网络访问,并需要在 AndroidManifest.xml 中加入网络权限,否则将无法访问网络。同时,需要注意网络访问的超时时间和缓存策略,以...

    Android 底层接口与驱动开发技术详解

    本书涵盖了从硬件抽象层(HAL)到用户空间驱动,再到应用程序接口(API)的全方位知识,旨在帮助读者理解Android系统如何与硬件进行交互,以及如何通过编程实现对硬件资源的有效控制。 首先,书中详细介绍了Android...

    android 访问网络接口+json解析(包含list)

    总结来说,Android应用访问网络接口主要依赖于像OkHttp这样的第三方库,而JSON解析则可以选择Gson或Jackson等库。理解这两个核心概念对于构建功能丰富的Android应用至关重要,特别是那些需要实时数据更新的应用。...

    android HTTP接口测试软件

    "android HTTP接口测试软件"是一个专为Android平台设计的小型应用程序,旨在简化这个过程。它允许开发者轻松地执行GET和POST请求,并且支持动态添加和删除请求参数。此外,它还具有自动格式化JSON响应的功能,这对于...

    Android接口实现登录注册

    1. Android Studio:作为开发环境,Android Studio提供了丰富的工具和库支持,用于构建用户界面、网络请求和数据处理。 2. Retrofit:这是一个流行的网络请求库,用于与服务器接口进行通信,简化HTTP请求的编写。 ...

    191 - 接口设计之美-通用性接口的组合应用a_android_接口设计_

    本话题“191 - 接口设计之美-通用性接口的组合应用a”着重探讨了如何通过巧妙地设计和组合通用接口来提升Android应用的灵活性和可复用性。 首先,接口设计的核心理念在于定义明确的契约,它描述了类或组件之间的...

    Android 底层接口与驱动开发技术详解 相关资料

    在Android系统中,底层接口与驱动开发是构建高效、稳定且高性能应用的关键环节。本资料主要探讨了Android的内核接口、硬件抽象层(HAL)、设备驱动以及Java与C/C++之间的交互等方面的知识,旨在帮助开发者深入理解...

    android调用webservice接口实现登陆源码

    在Android开发中,调用Web Service接口是常见的数据交互方式,尤其在实现用户登录功能时。Web Service通常采用SOAP或RESTful API的形式提供服务,允许客户端应用程序(如Android应用)发送请求并接收响应。本教程将...

    Android服务、aidl接口demo

    1. **AIDL简介**:AIDL是Android提供的接口定义语言,用于处理Android应用间的跨进程通信(IPC, Inter-Process Communication)。通过AIDL,应用可以暴露一部分功能给其他应用调用,就像Java中的接口一样。 2. **...

    android 网络编程简介

    标题:“Android 网络编程简介” ...由于Android基于Linux内核,因此Linux相关的优化技术对于提高Android网络应用性能同样重要。具备以上相关知识和技能将有助于开发者在Android网络编程领域取得成功。

    android接口回调详解、简单例子+复杂例子

    在Android开发中,接口回调是一种常见的通信机制,用于在组件之间传递信息,特别是在异步操作中,如网络请求、文件读写等。接口回调能够帮助我们处理这些操作的结果,使得程序更加灵活和响应式。本篇文章将深入讲解...

    Android开发接口帮助文档

    Android API是Android系统的核心组成部分,它为开发者提供了大量接口,涵盖了系统服务、UI元素、网络通信、多媒体处理等多个领域。通过这些接口,开发者可以实现各种应用程序的功能,例如创建用户界面、访问硬件设备...

    《android网络开发与应用实战详解>光盘代码

    《Android网络开发与应用实战详解》是一本深入探讨Android平台上的网络编程技术的书籍,由人民邮电出版社出版,作者王东华。这本书通过实践案例,详细讲解了如何在Android应用中实现各种网络功能,包括数据的获取、...

    Android10.0 静默安装、卸载接口.zip

    在Android系统中,静默安装...总之,Android 10.0对静默安装和卸载接口的调整是为了加强安全控制,对于开发者来说,这意味着在设计和实现这类功能时需要更加谨慎,遵循最佳实践并充分考虑用户的隐私和系统的安全性。

    Android 开发API接口帮助文档 非常全 英文版

    在Android开发过程中,掌握API接口是至关重要的,因为它们构成了应用程序功能的核心。这份"Android开发API接口帮助文档 非常全 英文版"是一个非常宝贵的资源,它提供了全面的API信息,可以帮助开发者深入理解Android...

    Android获取指定应用,单独应用的流量统计

    在Android系统中,获取指定应用的流量统计是一项重要的任务,特别是在优化网络使用、监控数据消耗或者进行应用性能分析时。本文将深入探讨如何在Android环境下,针对特定的应用程序,统计其在WiFi和GPRS(2G)网络下...

    android_应用.rar

    《Android 应用开发入门教程》 Android 是谷歌公司推出的一款开源移动操作系统,它以其开放性和灵活性吸引了全球众多开发者和用户。本教程“android_应用.rar”是针对Android 应用开发的一份非常好的入门资料,旨在...

    基于Android的网络应用程序开发研究.pdf

    Android网络应用程序开发的核心在于客户端与服务端的通信。客户端通常指的是运行在Android设备上的应用,而服务端可以采用各种技术实现,只要能满足项目需求。在Android与后台服务端之间进行数据交流时,由于可能...

Global site tag (gtag.js) - Google Analytics