zoukankan      html  css  js  c++  java
  • 【 Android官方文件读书笔记】连接网络

         一间连接应用网络的主要功能。Android系统对网络连接进行了封装,使得开发人员可以更快的给应用添加网络功能。大多数网络连接的Android应用使用HTTP发送和接受数据。Android包含两个HTTPclient:HttpURLConnectionApache HttpClient。

    开发人员可以使用这两个client中的随意一个去完毕网络连接。

        

       1, 网络连接的基本步骤:

    (1)添加权限:manifest文件里必须包括下面权限

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

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

     

    (2)检查网络状态。利用ConnectivityManager getActiveNetworkInfo()isConnected()方法运行检查。例如以下:

      ConnectivityManager connMgr = (ConnectivityManager) 

            getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.isConnected()) {

            // 获取数据

        } else {

            // 显示错误

        }

     

    (3)在独立线程中运行网络连接:网络操作涉及不可预知的延迟,为了防止不良的用户体验,通常的做法是从UI中独立出线程去运行网络连接操作。

     

    (4)连接并下载数据,以HttpURLConnection

            URL url = new URL(myurl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(10000 /* milliseconds */);
            conn.setConnectTimeout(15000 /* milliseconds */);
            conn.setRequestMethod("GET");
            conn.setDoInput(true);
            conn.connect();
            int response = conn.getResponseCode();  
            is = conn.getInputStream();


    (5)流对象转换为字符串对象 

        Reader reader = null;
        reader = new InputStreamReader(stream, "UTF-8");        
        char[] buffer = new char[len];
        reader.read(buffer);


    2。HttpClient与HttpURLConnection的对照。

       HttpClient与HttpURLConnection都支持HTTPS,流上传和下载, 可配置的超时。IPv6以及连接池。因此两个都能够完毕主要的网络操作。

       HttpClient是Apache开源组织提供的一个开源的项目,Android把它集成了进去。

    拥有众多的Api,实现比較稳定。bug少。但同一时候也因为HttpClient的API数量过多,使得开发人员非常难在不破坏兼容性的情况下对它进行升级和扩展,所以眼下Android团队在提升和优化HttpClient方面的工作态度并不积极。


       HttpURLConnection是一种多用途、轻量级的HTTPclient。他的Api比較简单。开发人员比較easy使用以及对它进行扩展。但缺点是Android2.3之前的版本号存在一些Bug。如:对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效等。Android2.3系统对这些问题进行了修复。并添加了一些HTTPS方面的改进。在Android 4.0版本号中。又加入了一些响应的缓存机制,并且Google团队会持续去对HttpURLConnection进行优化。


       一般建议2.3之前的系统使用HttpClient,而2.3及其之后的版本号使用HttpURLConnection。





    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    ntpdate
    动态查看日志
    eclipse proxy
    远程调试
    pe and elf
    03scikit-learn非监督学习
    15管家婆小项目
    02scikit-learn模型训练
    01scikit-learn数据集下载
    scikit-learn中文api
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4818907.html
Copyright © 2011-2022 走看看