get \ post \ httpclient

2019-07-18  本文已影响0人  Margaret_lhp

采用get方式提交数据到服务器

Get请求在网页发送过程中的抓包:

在安卓代码中如何使用Get请求网络数据:

采用post方式提交数据到服务器

Post请求在网页发送过程中的抓包:

在安卓代码中如何使用Post请求网络数据:

get和post请求数据比较

根据HTTP标准,HTTP请求可以使用多种请求方法。

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE,TRACE 和 CONNECT 方法。

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和POST。

GET 方法

优点:代码简单 容易编写 只需要在url后面组拼字符串

缺点:不可以提交太大的数据,规定组拼路径最大长度不超过4k, 不安全。

请注意,查询字符串(名称/值对)是在GET 请求的 URL 中发送的:

/test/demo_form.asp?name1=value1&name2=value2

POST 方法

优点:安全,用流的方式把数据写入到服务器 提交数据没有最大长度的限制

缺点:代码编写不方便。

请注意,查询字符串(名称/值对)是在POST 请求的 HTTP 消息主体中发送的:

POST

/test/demo_form.asp HTTP/1.1

Host:w3schools.com

name1=value1&name2=value2

网络请求的注意点:

1. 在安卓4.0版本以后请求网络的代码不能在主线程中运行。

2. 使用网络请求必须在AndroidMenifest.xml文件中申明使用权限。

 在android:name="android.permission.INTERNET" />

开源httpclient的get 和post请求

    前面我们讲解了使用HttpUrlConnection来处理Http的两种常用请求,接下来我们使用一套名叫HttpClient的面向对象的API处理Http请求,至于工作中如何对请求选型,同学们可以根据对代码熟悉程度来决定。

1. HttpClient的Get请求:

2.HttpClient的Post请求:

开源httpclient的POST请求

除了上面两种安卓官方指定的请求方式,当面还有一些第三方的开源项目可以使用,这里介绍另外一个工具android-async-http-master,其可以在github

上下载。以下简单介绍其开发步骤:

1. 导包:资料\第三方资料\android-async-http-master\library\src\main\java

2. 在AndroidMenifest.xml文件中申明使用权限 :

在<manifest />标签内添加<uses-permissionandroid:name="android.permission.INTERNET" />

3. 找到主要的类:该类支持的方法有delete  get header post put...

4. 实现代码:如下post方法有三个参数 1.网络地址 2.请求参数 3.返回值的监听器

开源httpclient文件上传

android-async-http-master除了可以在请求过程中发送请求参数还可以做上传文件的功能。

上传文件一般需要使用到两个参数  一个是文件名(比如key=”fName”

value=”aa.jpg”) 一个是要上传的文件  (key=”file”value=”上传的文件流”)

开发步骤:

1. 服务器准备好upload项目 客户端将所需要上传的文件添加到sd卡里面

2. 添加权限:

3. 写代码:

多线程下载原理1

多线程下载原理2

网络下载文件制定位置的请求头

Range, "bytes=100-200"

RandomAccessFile 类的构造方法中如下模式

"r"    以只读方式打开。

"rw"    打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。   

"rws"    打开以便读取和写入,实时将内存数据写入到文件里面去的,不单修改文件里面的内容  修改了这个描述这个文件里面的元数据

"rwd"    打开以便读取和写入,实时将内存数据写入到文件里面去的,主要只修改文件里面的内容

"rws" 和 "rwd"

模式的工作方式极其类似 :

如果该文件位于本地存储设备上,那么当返回此类的一个方法的调用时,可以保证由该调用对此文件所做的所有更改均被实时写入该设备。这对确保在系统崩溃时不会丢失重要信息特别有用。

多线程断点下载原理

开发步骤:

1. 创建一个变量mLastPosition  记录上次保存的位置。默认赋值为mStartPosition. 当发现有保存进度的文件,则从保存进度的文件中获取。

2. 告诉系统 实际下载位置从mLastPosition开始下载,写数据也从mLastPosition开始写。

3. 创建一个局部变量totalCount记录mLastPosition,并在写的过程中计算真实需要保存的进度值。最后将值实时写入系统。

出现的问题:

界面没有进度值开发步骤:

1. 在点击事件中添加ProgressBar

2. 为ProgressBar设置进度

上一篇 下一篇

猜你喜欢

热点阅读