什么是HTTP?

1.超文本传输协议是互联网上应用最为广泛的一种网络协议

2.HTTP是一个客户端和服务器端请求和应答的标准,客户端是终端用户,服务器端是网站

3.HTTP是客户端浏览器或其他应用程序与Web服务器之间的应用层通信协议

HTTP工作原理

1.客户端与服务器建立连接

2.建立连接后,客户端想服务器端发送一个请求

3.服务器接收到请求之后,向客户端发送响应信息

4.客户端与服务器端断开连接

注意:这里的第四条需要注意,即当用户看到如下的界面时,客户端就已经与服务器断开连接了。

HTTP运行流程

下面以一个简单的例子介绍与服务器端的连接,并从服务器端获取数据,下图是运行的截图:

当用户点击按钮时,向服务器端发送请求,并把返回的数据显示在下面的textview中,下面是具体的实现代码:

public class MainActivity extends Activity {private Button button;private TextView textView;private HttpResponse httpResponse=null;private HttpEntity httpEntity=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button=(Button)findViewById(R.id.button);textView=(TextView)findViewById(R.id.textview);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//生成一个请求对象HttpGet httpGet=new HttpGet("http://www.baidu.com");//生成一个Http客户端对象HttpClient httpClient=new DefaultHttpClient();//使用Http客户端发送请求对象InputStream inputStream=null;try {httpResponse=httpClient.execute(httpGet);//收到服务器的响应之后把返回的数据读取出来httpEntity=httpResponse.getEntity();inputStream=httpEntity.getContent();//流文件的读取BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));String resultString="";String lineString="";while((lineString=reader.readLine())!=null){resultString=resultString+lineString;}textView.setText(resultString);} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {inputStream.close();} catch (Exception e2) {// TODO: handle exceptione2.printStackTrace();}}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}

注意,由于涉及到网络连接,还要在AndroidManifest中声明网络权限:

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

Android开发--Http操作介绍(一)相关推荐

  1. Android开发--Http操作介绍(二)

    通常与服务器建立连接有两种方法,Get和Post方法,下面就对这两个方法进行介绍. 无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源. 1.创建HttpGet或 ...

  2. Android通知怎么实现?Android开发如何操作相机和相册?

    Android通知怎么实现?Android开发如何操作相机和相册? 前言 八.Android通知怎么实现?Android开发如何操作相机和相册? 8.1 通知介绍 8.2 通知的基本用法 8.3 An ...

  3. Android开发 ---如何操作资源目录中的资源文件2

    Android开发 ---如何操作资源目录中的资源文件2 一.颜色资源管理 效果图: 描述: 1.改变字体的背景颜色 2.改变字体颜色 3.改变按钮颜色 4.图像颜色切换 操作描述: 点击(1)中的颜 ...

  4. Android开发--SharedPreferences初步介绍

    存储数据在Android开发中是一项非常重要的功能,下面介绍的这种技术是利用XML文件存储键值对. SharedPreferences的使用主要有四步: 1)获得SharedPreferences对象 ...

  5. Android开发环境配置介绍

    在我们进行Appium+Android进行自动化测试时,我们需要安装android_sdk环境,安装过程发现Android SDK,Android studio,AVD Manager,SDK Man ...

  6. 2020年是做安卓开发人员的绝佳时机,android开发面试自我介绍

    你这样做仅仅是准备好一个开发环境去构建安卓App,但是你还得去准备好基础和基本知识来理解安卓开发和大多数教程使用的通用术语 你现在也可以在安卓系统上构建基本的App,并且可以开发一些功能.随意使用空白 ...

  7. android开发 theme,详细介绍了Android主题与风格开发教案(style and theme)

    Android设备和iOS设备的界面风格比较起来,说实话Android的默认UI组件最多只是可以看,绝对比不上iPhone默认组件那么好看和耐看.不过Android系统的开放性很高,我们可以从头到尾改 ...

  8. Android开发--蓝牙操作

    首先,由于模拟器上没有蓝牙装置,所以我们需要一个含有蓝牙装置的Android系统 其次,要操作设备上的蓝牙装置,需要在AndroidManifest中声明两个权限: <uses-permissi ...

  9. Android开发:操作UI线程4种方法

    我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据.但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的.下面总结4 ...

最新文章

  1. Ubuntu双系统Grub启动菜单修复
  2. 类的大小,虚函数,继承
  3. 正则 ?= 和 ?= 用法 以及零宽断言等概念
  4. 不带头结点的单链表------C语言实现(带注释)
  5. 避免强光的一些注意点
  6. UItableViewCell滑动删除时,调整cell子视图的位置大小
  7. 您的MyFitnessPal帐户几乎肯定已被黑客入侵,请立即更改密码
  8. Linq 下的 Take() 方法内部机制是怎样的?
  9. arcore_如何使用ARCore和Android Studio构建增强现实Android应用
  10. javascript之Partial Application
  11. LeetCode MySQL 262. 行程和用户
  12. [POI2008]Mirror Trap
  13. 网上兼职编程赚钱的那点事
  14. 怎么样将Excel数据中的小数提取出来
  15. STM32F407 HAL库 ADC笔记
  16. Leetcode_123_Best Time to Buy and Sell Stock III
  17. gnss、gps、imu、rtk、ins区分及含义
  18. CSDN知识库构建,我以我血荐轩辕
  19. 微信小程序实现新闻轮播、禁止手动竖向滑动
  20. 【Open3D】人脸深度图转点云,点云表面重建

热门文章

  1. Android内部存储改变读取权限
  2. s5pv210 uboot-2012-10移植(三) 之支持SPL
  3. tomact+apache实现web网页动静结合
  4. SUN PORTAL 7.2安装在windows 的问题解决办法!
  5. 我要放弃RedHat Linux了
  6. 如何让squid实现动态缓存
  7. 用户输入与while循环
  8. 【原创翻译】如何命名变量
  9. Ubuntu13.04 下源码安装Rapidsvn
  10. 51CTO的首篇博文