URLConnection和HttpURLConnection使用的都是java.net中的类,属于标准的java接口。

HttpURLConnection继承自URLConnection,差别在与HttpURLConnection仅仅针对Http连接。

访问网络实例

public class MainActivity extends ActionBarActivity {private Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final String urlStr = "http://www.baidu.com";btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {new AsyncTask<String, Void, String>() {@Overrideprotected String doInBackground(String... arg0) {return doGet(arg0[0]);// return doPost(arg0[0]);}}.execute(urlStr);}});}// 通过默认的GET方式获取数据public String doGet(String urlStr) {StringBuilder sb = new StringBuilder();try {URL url = new URL(urlStr);URLConnection con = url.openConnection();con.setConnectTimeout(6 * 1000);// 设置超时if (((HttpURLConnection) con).getResponseCode() != 200)throw new RuntimeException("请求url失败");// 创建读取流InputStream is = con.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String line = "";// 循环读取数据while ((line = br.readLine()) != null) {sb.append(line);}// 关闭流br.close();isr.close();} catch (IOException e) {e.printStackTrace();}return sb.toString();}// 通过POST方式获取数据public String doPost(String urlStr) {StringBuilder sb = new StringBuilder();try {URL url = new URL(urlStr);HttpURLConnection con = (HttpURLConnection) url.openConnection();// 设置请求方法和输出数据con.setDoOutput(true);con.setRequestMethod("POST");con.setConnectTimeout(6 * 1000);// 设置超时if (con.getResponseCode() != 200)throw new RuntimeException("请求url失败");// 添加参数OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream(), "utf-8");BufferedWriter bw = new BufferedWriter(osw);bw.write("userId=1");bw.flush();// 读取返回的数据InputStream is = con.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String line = "";// 循环读取数据while ((line = br.readLine()) != null) {sb.append(line);}// 关闭流br.close();isr.close();} catch (IOException e) {e.printStackTrace();}return sb.toString();}
}

HttpURLConnection与HttpClient

在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。 在Android中,androidSDK中集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议工具包,并且它支持 HTTP 协议最新的版本和建议。使用HttpClient可以快速开发出功能强大的Http程序。

两者区别:

HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等, HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。

访问网络实例

public class MainActivity extends Activity {private Button btn;private HttpClient client;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);client = new DefaultHttpClient();btn = (Button) findViewById(R.id.button1);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {String url = "http://www.baidu.com";doGet(url);}});}// 通过HttpGet来访问网络public void doGet(String url) {new AsyncTask<String, Void, Void>() {@Overrideprotected Void doInBackground(String... arg0) {String urlStr = arg0[0];HttpGet get = new HttpGet(urlStr);try {// 发送请求方法并返回HttpResponse response = client.execute(get);// 获取数据String value = EntityUtils.toString(response.getEntity());System.out.println(value);} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}}.execute(url);}// 通过HttpPost来访问网络public void doPost(String url) {new AsyncTask<String, Void, Void>() {@Overrideprotected Void doInBackground(String... arg0) {String urlStr = arg0[0];HttpPost post = new HttpPost(urlStr);try {// 附加参数List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();list.add(new BasicNameValuePair("userId", "1"));post.setEntity(new UrlEncodedFormEntity(list));} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}try {// 发送请求方法并返回HttpResponse response = client.execute(post);// 获取数据String value = EntityUtils.toString(response.getEntity());System.out.println(value);} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}}.execute(url);}
}

Android开发_简单的网络编程相关推荐

  1. android 网络编程实现,Android开发使用HttpURLConnection进行网络编程详解【附源码下载】...

    本文实例讲述了Android开发使用HttpURLConnection进行网络编程.分享给大家供大家参考,具体如下: --HttpURLConnection URLConnection已经可以非常方便 ...

  2. Android开发学习之路--网络编程之初体验

    一般手机都是需要上网的,一般我们的浏览器就是个webview.这里简单实现下下功能,先编写Android的layout布局: <?xml version="1.0" enco ...

  3. java 安卓客户端开发_《安卓网络编程》之第一篇 java环境下模拟客户端、服务器端...

    1.Socket简介 在网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个 ...

  4. 做简单的android 软件推荐,Android_适用于Android开发的简单聊天软件,适用于android 开发。是一个简 - phpStudy...

    适用于Android开发的简单聊天软件 适用于android 开发.是一个简单的聊天软件,包括知识点,各个控件的运用(ExpandableListView,ViewPager,Spinner,Line ...

  5. Linux高并发服务器开发---笔记4(网络编程)

    0705 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.2 Linux系统编程1.4.3 Linux系统编程2 4.4 多进程 1-9 10.进程间通信☆☆☆ 4.5 ...

  6. Android开发环境简单配置

    为什么80%的码农都做不了架构师?>>>    ·         Android开发环境简单配置 写这个系列的原因也是因为自己对android比较感兴趣,而网上多数教程都是直接参照 ...

  7. 文件管理器android实现,Android开发之简单文件管理器实现方法

    易采站长站为您分析Android开发之简单文件管理器实现方法,简单实现了Android的文件目录查看,文件重命名,打开,删除等功能,需要的朋友可以参考下 本文实例讲述了Android开发之简单文件管理 ...

  8. android 观察者,Android开发实现简单的观察者与被观察者示例

    本文实例讲述了Android开发实现简单的观察者与被观察者.分享给大家供大家参考,具体如下: 概述: 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它 ...

  9. 一个基于Android开发的简单的音乐播放器

    一个基于Android开发的简单的音乐播放器 记得当时老师让我们写因为播放器时,脑子一头雾水,网上杂七杂八的资料也很少有用,因此索性就自己写一篇,希望对有缘人有用. 因为有好多人问我要源码,所以附上g ...

最新文章

  1. 主流家用计算机,年终聊装机 主流家用电脑怎么选CPU?
  2. 被315曝光还霸气回应“不受影响”,这家SaaS公司是真硬气还是无底线?
  3. 无需Get更多技能,快速打造一个可持久化的任务调度
  4. 数据库索引的作用和长处缺点
  5. 单例模式引发的内存泄漏:_资源泄漏:救援的命令模式
  6. 1062. Talent and Virtue (25)
  7. HTML中scr是图片的什么,HTML中关于url、scr、href的区别
  8. SpringCloud面试题分享
  9. sys_brk分析 linux1.2.0版本,linux内存管理之sys_brk实现分析(续)
  10. 美团面试一道场景设计题
  11. 微信群 保存到通讯录
  12. 结巴(jieba)分词器入门
  13. 宣布下,一个小的里程碑!
  14. \t\t产后饮食标准 饮食原则 最适合新妈妈吃的菜 饮食秘诀 禁忌
  15. 如何用两个队列模拟实现一个栈
  16. iOS 常用第三方开源框架介绍
  17. bearer token_接口认证方式:Bearer Token
  18. 测试还是国外的香?走进海外测试开发工程师
  19. How to Install Nvidia Kernel Module Cuda and Pyrit in Kali Linux
  20. day 37 ajax跨域 浏览器同源测略

热门文章

  1. 【无2021年标准员-通用基础(标准员)考试内容及标准员-通用基础(标准员)复审模拟考试
  2. 共用体和结构体的区别
  3. Java面向对象程序设计——0519练习
  4. [错误解决] [Java] iphone 华为 搜狗 手机 浏览器 下载文件 名称乱码
  5. 采集中常见HTML标签
  6. Fedora万能播放器Mplayer安装教程
  7. 互联网员工股权福利曝光:阿里最慷慨 腾讯赚得多(上)
  8. Milvus 数据处理流程解剖
  9. Ubuntu20.04环境下MySQL8.0.30的 用户管理,设置修改密码,密码过期策略,权限管理,角色管理
  10. 云之家宣布2017全年收款破亿 企业用户350万