• 4.网络编程


    HTTP网络编程

    网络接口文档

    用来描述客户端和服务端的数据交互

    Http的格式规范

    1. 请求部分

    请求消息行:定义请求类型,请求的地址,http的版本号

    请求消息头:定义请求的消息头

    请求消息内容实体:消息的内容实体

    POST http://www.baidu.com/ur/submit/urreward HTTP/1.1
    Host: www.baidu.com
    Connection: keep-alive
    Content-Length: 412
    Origin: http://www.baidu.com
    X-Requested-With: XMLHttpRequest
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
    Content-Type: application/x-www-form-urlencoded
    Accept: */*
    Referer: http://www.baidu.com/s?wd=http%E5%8D%8F%E8%AE%AE&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=0&rsv_pq=9ee40013000089f5&rsv_t=0ac4SWMebVX5TjRmjHHyNHdDixuCh%2FcpmFz8tPkwfArEbHonfYesWFV64Rr4%2F7VNDDnn&inputT=16437
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.8
    Cookie: BAIDUID=BECE0B98C5D5A8EA4C5A93221901CC58:FG=1; BAIDUPSID=BECE0B98C5D5A8EA4C5A93221901CC58; BDUSS=l1MmM3MEVEclRYR1RZc1ZJTnBDb2RBUTY1YktTUFc0a2pBYVlHNkxOZDk4N0JVQVFBQUFBJCQAAAAAAAAAAAEAAABoRLMjd2FuZ2Rha2U4ODgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH1miVR9ZolUVm; cflag=65535%3A2; BD_HOME=1; BD_UPN=12314353; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_645EC=ed505mET4I1deA3bYtMtRU3uR2cJjax8rhNPHTOm8z3DRr81YiRxdAGu2EkNN9FfIu%2Fm; BD_CK_SAM=1; BDSVRTM=89; H_PS_PSSID=8342_4398_10161_1461_10624_10571_10213_10500_10497_10016_10511_10644_10052_10459_10066_10219_9769_10463_10355_9094_10095_10008_10443_10460_10415_10360_9024_10627
    
    bsToken=b22dd64be5811ede7970782c338fdead&asyn=1&info=pid%3Dse%26method%3Dsearch%26query%3Dhttp%25E5%258D%258F%25E8%25AE%25AE%2Fpid%3Daladdin%26resourceid%3D91%26fetchkey%3Dhttp%2525E5%25258D%25258F%2525E8%2525AE%2525AE%26method%3Dsearch%26query%3Dhttp%25E5%258D%258F%25E8%25AE%25AE%2Fpid%3Daladdin%26resourceid%3D1527%26fetchkey%3D%26method%3Dsearch%26query%3Dhttp%25E5%258D%258F%25E8%25AE%25AE&se=utf-8&ge=utf-8
    
    1. 响应部分

    响应状态行:定义响应的状态码

    响应内容头:定义响应的消息头

    响应内容实体:响应的内容实体

    HTTP/1.1 200 OK
    Cache-Control: private
    Date: Sun, 14 Dec 2014 14:41:34 GMT
    Expires: Sun, 14 Dec 2014 14:41:34 GMT
    Content-type: text/html
    Vary: Accept-Encoding
    Content-Encoding: gzip
    Transfer-Encoding: chunked
    Server: BWS/1.0
    Connection: Keep-Alive
    
    

    网络调试工具的使用

    1. 工具介绍: Fiddler2

      Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式.

    2. 模拟请求发送

      1. 找到软件右侧的Composer选项卡,选中
      2. 选中请求方式 (GET,POST)
      3. 填写请求URL
      4. 如果是post请求,在Request body中添加请求参数,并且添加请求头Content-Type: application/x-www-form-urlencoded
      5. 如果是get请求,在URL中添加参数
      6. 点击Excute执行请求
    3. 查看网络数据返回

      1. 选中左侧发送的请求
      2. 选中右侧的Inspectors选项卡
      3. 查看下侧的Raw选项卡,查看返回结果

    Http 异步请求的封装

    1. 什么场景用异步任务

      处理耗时操作的时候用到异步任务,否则andorid 会抛出ANR(application not response)错误

    2. 为什么要用到回调

      在处理异步任务的时候,结果由子线程获得,此时需要将结果给到主线程。因此在主线程中调用异步任务时需要设置回调

    3. 开发过程中UI控制层访问网络最关心的是什么

      UI控制层访问网络的目的是为了获得网络返回数据,UI层最关心返回的数据结果;在java开发中,一切皆有面向对象的思想,数据即是对象,UI层拿到Object最为合适。

    4. 如何为UI控制层封装好网络请求

      异步 + 回调 + 接口文档规范

    http 后台任务

    后台任务是处理 及时性不高的任务,不需要耗用太多资源去做网络请求,UI也不是很关心数据返回

    1. 通常应用程序只会给到一个线程去处理所有的后台任务
    2. 后台任务需要按照一定的格式归档存储
    3. 通过IntentService的方式运行后台任务
    4. IntentService

      IntentService是Service类的子类,用来处理异步请求。客户端可以通过startService(Intent)方法传递请求给IntentService。

      1. 必须实现一个无参数构造函数
      2. onHandleIntent()运行在子线程中
      3. 如果IntentService 被start了多次,onHandleIntent()方法将排队执行多次。
  • 相关阅读:
    jpeg 文档格式
    gif 文件格式
    firefox前世今生
    png 文档格式
    字符'\xe5\x8c\x97\xe4\xba\xac\xe6\x96\xb0\xe5\x8d\x8e\xe7\x94\xb5\xe8\x84\x91\xe5\xad\xa6\xe6\xa0\xa1' 转为汉字
    SQL server 报错:
    encode 与 decode
    Octave 作图 无响应
    qmake建工程
    urlparse (scheme、netloc、path等)
  • 原文地址:https://www.cnblogs.com/sixrain/p/5188142.html
Copyright © 2020-2023  润新知