美文网首页
get \ post \ httpclient

get \ post \ httpclient

作者: Margaret_lhp | 来源:发表于2019-07-18 23:05 被阅读0次

    采用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设置进度

    相关文章

      网友评论

          本文标题:get \ post \ httpclient

          本文链接:https://www.haomeiwen.com/subject/rzzllctx.html