Android是作为智能手机的操作系统,我们开发的应用,大多数也都须要连接网络,通过网络发送数据、获取数据,因此作为一个应用开发人员必须熟悉怎么进行网络訪问与连接。

通常android中进行网络连接通常是使用scoket或者http,http是最多的情况。这里,我来总结下。怎么进行http网络訪问操作。

android是採用java语言进行开发的,android的包中包括java的URLConnection和apache 的httpclient,因此我们能够使用这两个工具进行网络连接和操作。同一时候。为了控制是否同意程序连接网络,我们开发应用时,须要在Manifest文件里配置申请网络连接的权限,代码例如以下。

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

使用URLConnection连接网络

URLConnection为java.net包中提供的网络訪问。支持http,https,ftp等。进行http连接时。使用HttpURLConnection就可以。演示样例代码例如以下:

URL url = new URL("http://www.android.com/");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
readStream(in); //该方法是我们自己写的,从流中取数据保存到本地。实现从网络获取数据。 finally {
urlConnection.disconnect();
}

向server提交数据时,须要採用POST传输

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
urlConnection.setDoOutput(true); //设置能够上传数据
urlConnection.setChunkedStreamingMode(0); OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
writeStream(out); //该方法时我们自己写的。向输出流中写数据,实现数据上传。 InputStream in = new BufferedInputStream(urlConnection.getInputStream());
readStream(in);
finally {
urlConnection.disconnect();
}

很多其它用法和函数请查看:http://developer.android.com/reference/java/net/HttpURLConnection.html

同一时候HttpsURLConnection的用法请查看:http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html

使用HttpClient

这个呢,我们也能够使用AndroidHttpClient页能够使用apache默认的DeafultHttpClient,两者之间只常见Client不同,其它都一样

创建AndroidHttpClient

AndroidHttpClient httpClient = AndroidHttpClient.newInstance("user-agent");

创建DefaultHttpClient

HttpClient client = new DefaultHttpClient();

GET请求

HttpGet getRequest = new HttpGet("http://blog.isming.me");
try {
HttpResponse response = httpClient.execute(getMethod); //发起GET请求 Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//获取server响应内容
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

发起POST请求:

//先将要传的数据放入List
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));
params.add(new BasicNameValuePair("param2", "第二个參数")); try {
HttpPost postMethod = new HttpPost(baseUrl);
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将參数填入POST Entity中 HttpResponse response = httpClient.execute(postMethod); //运行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容 } catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

说明

从上面看到,使用HttpClient更加方便,明了。

只是Android官方给我们的文档说明是建议android2.2及下面版本号建议使用HttpClient,android2.3及以上版本号建议使用HttpURLConnection。

原因是HttpURLConnection时一个轻量级的Httpclient,提供的API比較简单,方便扩展,可是在2.2及曾经版本号中,这个API存在一些bug。在2.3的版本号中,给改动了。

而HttpClient尽管稳定,bug少,可是其提供的API非常多,进行升级和扩展不方便,android团队在提升和优化其方面的积极性不高。

因此,在Android2.2版本号曾经。使用HttpClient时最好的选择。

Android2.3版本号及以后,使用HttpURLConnection时最佳选择。

框架

网络连接是耗时的操作。通常我们不会将其放在UI线程操作。会编写异步线程,将其放在后台线程运行(异步线程操作看这里)。

而网上有一些线程的网络操作框架,能够降低我们的工作量,同一时候我们自己写的好,可能非常多异常处理之类的。没有其向的更加全面。

有轻量的android-async-http

谷歌官方的volley

Square提供的Retrofit

这个能够依据自己项目的须要选择不同的框架,有空我来写写volley的使用(PS:网上已经有用法了。自己百度去),另外两个我的连接中已经有用法了。

ok,完毕!

写的东西不少。可是介绍的不够具体。

假设不清楚的。欢迎与我交流

原文地址:http://blog.isming.me/blog/2014/05/11/use-network-in-android/,欢迎转载,转载请注明出处!

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

android网络操作使用汇总(http)的更多相关文章

  1. PHP网络操作函数汇总

    PHP网络操作函数汇总 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了PHP网络操作函数汇总,本文列举了如gethostbyaddr.gethostbyname.head ...

  2. Android网络操作的几种方法

    安卓开发软件:AndroidStudio 服务器软件:Myeclipse+Tomcat 首先无论是哪种方式,安卓手机软件要想联网,必须要申请联网权限(android.permission.INTERN ...

  3. android——网络操作(一)连接网络

    连接网络 一,包含许可 <uses-permissionandroid:name="android.permission.INTERNET"/> <uses-pe ...

  4. 【Android】详解Android 网络操作

    目录结构: contents structure [+] 判断网络 判断是否有网络连接 判断WIFI网络是否可用 判断MOBILE网络是否可用 获取当前网络连接的类型信息 监听网络 获取网络信息需要在 ...

  5. Android权限操作之uses-permission详解

    本文实例讲述了Android权限操作之uses-permission.分享给大家供大家参考,具体如下: 我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android ...

  6. OkHttp使用教程——网络操作之OkHttp, Volley以及Gson

    写这篇文章的动机 在安卓项目中有一个问题可能无法避免:网络.不管你是加载图片,请求API数据还是从因特网上获得一个字节,你都是在使用网络. 鉴于网络在安卓中的重要性与基础性,当今安卓开发者面临的问题之 ...

  7. android内部培训视频_第四节(1)_异步网络操作

    第四节(1):异步网络操作  一.结合asyncTask下载网络图片 1.定义下载类,继承自asyncTask,参数分别为:String(url地址),Integer(刻度,本例没有用到),BitMa ...

  8. 九、Android学习第八天——广播机制与WIFI网络操作(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...

  9. android之网络操作(1)

    一.网络操作 在网络操作中JAVA已经为我提供了一套API用来进行网络操作,在android开发中我们仍可以这套API来做开发.下面通过一个简单的例子来了解一下android下的网络操作. 点击图中下 ...

随机推荐

  1. Deploy Oracle 10.2.0.5 on Red Hat Enterprise Linux 6.4

    一.Linux系统安装和配置 1.安装系统时选Desktop 2.设置eth0网卡为静态IP,加入子网掩码,网关,DNS.并配置自己主动启动 3.改动/etc/hosts.加入主机名和相应IP 4.禁 ...

  2. 在SQL Server引用dll的流程

    原文:在SQL Server引用dll的流程 在SQL Server中引用dll分为两个步骤 1.创建一个dll文件 2.把dll文件放进SQL Server的程序集中.然后定义一个Function, ...

  3. 【Java基础】System.arraycopy()的使用详解

    由于在Java中System.arraycopy()方法在一维数组和二维数组中的表现不同,所以做了一个测试 public static void main(String[] args) { int[] ...

  4. 【转】ubuntu终端方向键不能用(主机名不显示)问题的解决

    sudo gedit /etc/passwd 在/etc/passwd中修改该用户对应的shell:/bin/sh改为/bin/bash即可解决该问题 来自:http://blog.csdn.net/ ...

  5. 修改session的存储机制

    <?php  //修改session的存储机制 //最起码应该有一个 读方法, 和一个 写方法. //1, 我们先去建立 读方法 和 写方法. //2, 告知session系统,使用我们的方法完 ...

  6. CodeForces 482C Game with Strings

    意甲冠军: n一定长度m串  隐藏的字符串相等的概率  然后,你猜怎么着玩家隐藏的字符串  的询问字符串的一个位置  再不断的知道一些位置后  游戏者就能够确定藏起来的串是什么  问  游戏者的期望步 ...

  7. JavaIO流程--创建文件和目录的实例

    *创建函数:  *public boolean createNewFile():创建文件 本文假设存在.不创造(转让file.createNewFile()返回false)  *public bool ...

  8. java得到clientIP地址和MAC住址

    最近的项目应该得到client的mac住址. 服务器移植centos制,arm建筑箱.client手机和移动设备.(其他方案也应该是一流的似的) 首先,要获得ip住址: 依据client的http请求 ...

  9. Base64编码 概念和用途

    Base64概念 什么是Base64? 依照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把随意序列的8位字节描写叙述为一种不易被人直接识别的形式.(The Base6 ...

  10. SQL Server安全性专题一:简介

    原文:SQL Server安全性专题一:简介 一. 安全威胁与法则 1. 安全定义 2. 安全威胁 3. 安全法则 安全定义: 在SQLServer环境中,安全性可以认为是[数据保护].包括:  数 ...