android 网络连接处理分析

在Android中,可以有多种方式来实现网络编程:

创建URL,并使用URLConnection/HttpURLConnection

使用HttpClient

使用WebView

创建URL,并使用URLConnection/HttpURLConnection

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

创建 URL 以及 URLConnection / HttpURLConnection 对象

1 设置连接参数

2 连接到服务器

3 向服务器写数据

4 从服务器读取数据

源码

try { 
        // 创建URL对象 
        URL url = new URL("http://t.sina.cn/fesky"); 
        // 创建URL连接 
        URLConnection connection = url.openConnection(); 
        // 对于 HTTP 连接可以直接转换成 HttpURLConnection, 
        // 这样就可以使用一些 HTTP 连接特定的方法,如 setRequestMethod() 等 
        // HttpURLConnection connection 
        // =(HttpURLConnection)url.openConnection(Proxy_yours); 
        // 设置参数  www.jb51.net
        connection.setConnectTimeout(10000); 
        connection.addRequestProperty("User-Agent", "J2me/MIDP2.0"); 
        // 连接服务器 
        connection.connect();

} catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
    }
使用HttpClient
对于HttpClient类,可以使用HttpPost和HttpGet类以及HttpResponse来进行网络连接。

使用WebView

Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装成了WebView组件。

1. webview的XML定义:

<WebView   
        android:id="@+id/webview"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
    /> 
2.Manifest文件中权限的设定:
<uses-permission android:name="android.permission.INTERNET" />
3.如果想要支持JavaScript:webview.getSettings().setJavaScriptEnabled(true);  
4.如果需要在WebView中显示网页,而不是在内置浏览器中浏览,则需要mWebView.setWebViewClient,并重写shouldOverrideUrlLoading方法。

5.如果不做任何处理,在显示你的Brower UI时,点击系统"Back"键,整个Browser会作为一个整体"Back"到其他Activity中,而不是希望的在Browser的历史页面中Back。如果希望实现在历史页面中Back,需要在当前Activity中处理Back事件:mWebView.goBack();

WebView webview; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        // 获取WebView对象 
        webview = (WebView) findViewById(R.id.webview);  
        // 使能JavaScript 
        webview.getSettings().setJavaScriptEnabled(true);  
        // 如果需要在WebView中显示网页,而不是在内置浏览器中浏览, 
        // 则需要mWebView.setWebViewClient,并重写 
        // shouldOverrideUrlLoading方法。 
        webview.setWebViewClient(new WebViewClientDemo()); 
        // 加载网页 
        webview.loadUrl("http://t.sina.cn/fesky");   
    } 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        // 按下BACK键回到历史页面中 
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {  
            webview.goBack();  
            return true;  
        }  
        return super.onKeyDown(keyCode, event); 
    } 
    private class WebViewClientDemo extends WebViewClient {  
        @Override  
        // 在WebView中而不是默认浏览器中显示页面 
        public boolean shouldOverrideUrlLoading(WebView view, String url) {  
            view.loadUrl(url);  
            return true;  
        }  
    }
webview.loadData(html, "text/html", "utf-8");

如果html中包含中文,则需要webview.loadData(URLEncoder.encode(html,encoding), mimeType, encoding);

对于本地图片或网页的显示,可以使用loadUrl,不过Url的地址前缀为file:///,如"file:///android_asset/test.htm"。

(0)

相关推荐

  • Android中检查网络连接状态的变化无网络时跳转到设置界面

    在AndroidManifest.xml中加一个权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> 主代码中实现: @Over

  • Android中判断网络连接是否可用及监控网络状态

    获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 复制代码 代码如下: public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConn

  • android检测网络连接状态示例讲解

    Android连接首先,要判断网络状态,需要有相应的权限,下面为权限代码(AndroidManifest.xml): 复制代码 代码如下: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.INTERNET"/> 然后,检测网络状态是否可用 复制代码

  • Android中判断网络连接状态的方法

    App判断用户是否联网是很普遍的需求,实现思路大概有下面几种 利用Android自带的ConnectivityManager类 有时候连上了wifi,但这个wifi是上不了网的,我们可以通过ping www.baidu.com来判断是否可以上网 也可以利用get请求访问www.baidu.com,如果get请求成功,说明可以上网 1.判断网络是否已经连接 // check all network connect, WIFI or mobile public static boolean isNe

  • android 检查网络连接状态实现步骤

    获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 复制代码 代码如下: public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConn

  • Android中监听判断网络连接状态的方法

    在无网或网速差的状态下,没必要去连接服务器. 你可以使用 ConnectivityManager 来判断是否连到网络,以及网络类型. 判断是否有网络连接 下面的代码用ConnectivityManager查询是活动网络连接判断是否有Internet连接. 复制代码 代码如下: ConnectivityManager cm =         (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);  

  • Android编程判断网络连接是否可用的方法

    本文实例讲述了Android编程判断网络连接是否可用的方法.分享给大家供大家参考,具体如下: 为了提高用户体验,我们在开发 android 应用的过程需要联网获取数据的时候我们首先要做的一步就是: 1.判断当前手机是否打开了网络 2.打开了网络是否可以上网 然后再去执行联网逻辑,避免没联网做不必要的工作! 通常情况下,我们是这样判断的 public static boolean isNetAvailable(Context context) { ConnectivityManager conne

  • Android中监听系统网络连接打开或者关闭的实现代码

    很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.net.ConnectivityManager;  import android.net.NetworkInfo; 复制代码 代码如下: public class NetstateR

  • android 网络连接处理分析

    在Android中,可以有多种方式来实现网络编程: 创建URL,并使用URLConnection/HttpURLConnection 使用HttpClient 使用WebView 创建URL,并使用URLConnection/HttpURLConnection java.net.*下面提供了访问 HTTP 服务的基本功能.使用这部分接口的基本操作主要包括: 创建 URL 以及 URLConnection / HttpURLConnection 对象 1 设置连接参数 2 连接到服务器 3 向服务

  • Android网络连接判断与相关处理

    本文为大家分享了Android网络连接判断与相关处理,供大家参考,具体内容如下 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限.  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 public boolean isNetworkConnected(Context context) { if (context != nul

  • Redis源码与设计剖析之网络连接库

    目录 Redis 网络连接库分析 1. Redis网络连接库介绍 2. 客户端的创建与释放 2.1 客户端的创建 2.2 客户端的释放 3. 命令接收与命令回复 3.1 命令接收 3.2 命令回复 4. CLIENT命令的实现 Redis 网络连接库分析 1. Redis网络连接库介绍 Redis网络连接库对应的文件是networking.c,这个文件主要负责: 客户端的创建与释放. 命令接收与命令回复. Redis通信协议分析. CLIENT 命令的实现. 2. 客户端的创建与释放 2.1 客

  • Android编程监听网络连接状态改变的方法

    本文实例讲述了Android编程监听网络连接状态改变的方法.分享给大家供大家参考,具体如下: BroadcastReceiver public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //Toast.makeText(context, intent

  • Android判断设备网络连接状态及判断连接方式的方法

    本文实例讲述了Android判断设备网络连接状态及判断连接方式的方法.分享给大家供大家参考,具体如下: 在Android开发过程中,对于一个需要连接网络的Android设备,对设备的网络状态检测是很有必要的!有很多的App都需要连接网络.判断设备是否已经连接网络,并且在连接网络的状态下判断是wifi无线连接还是GPRS手机网络连接,这样就可以在不同的网络连接下去调用不同的方法,处理不同的事情.这些功能都写在了下面的代码中了!请看主要代码如下: /** * 检测网络是否连接 * @return *

  • Android编程获取网络连接方式及判断手机卡所属运营商的方法

    本文实例讲述了Android编程获取网络连接方式及判断手机卡所属运营商的方法.分享给大家供大家参考,具体如下: 问题:项目中写的网络模块,感觉有点乱:两套代码 --模拟器.真机,维护起来十分麻烦. 解决办法:代码自动去检查到那种网络环境,然后调用不同的联网方式. 查看了模拟器上默认的接入点:移动网络 -- APN = "internet" 1.通过获取apn的名称,来判断网络 // 获取Mobile网络下的cmwap.cmnet private int getCurrentApnInU

随机推荐