1.HTTP请求方法

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

HTTP1.0定义了三种请求方法: GET(查), POST(改)和 HEAD(获取报头,一般用来测试链接是否正常)方法。

HTTP1.1新增了五种请求方法:Put(增),Delete(删), OPTIONS(查看服务器性能), TRACE(追溯服务器之前接收的请求,用来找问题) 等方法。

序号

方法

描述

1

GET

请求指定的页面信息,并返回实体主体。

2

HEAD

类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头

3

POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

4

PUT

从客户端向服务器传送的数据取代指定的文档的内容。

5

DELETE

请求服务器删除指定的页面。

6

CONNECT

HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

7

OPTIONS

允许客户端查看服务器的性能。

8

TRACE

回显服务器收到的请求,主要用于测试或诊断。

9

PATCH

是对 PUT 方法的补充,用来对已知资源进行局部更新 。

并且HTTP1.0规定浏览器与服务器只保持短暂的连接,每次请求后就会断开连接,一个包含有许多图像的网页文件的多个请求和应答则需要多次连接传输才能完成.

而HTTP1.1支持持久连接, 减少了建立和关闭连接的消耗和延迟, 一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输.

2.get和post

  • get :  get提交的时候会将所有参数都拼在在url后面来访问.并且只接受1k以内的内容,每个参数以&隔开,由于参数内容是显示的,所以只能适用于非隐私访问.
  • post :  post请求的时候则是将所有参数内容以key=value形式放到请求体中,并且长度不受限制.

3.request请求

客户端请求包含了4个部分:

  • 请求行(request line)
  • 请求头(header)
  • 空行、
  • 请求体

以get为例:

  • Host: 告诉服务器,客户端的地址
  • User-Agent: 客户端类型,这里表示用的是windows电脑,用的是QQBrowser浏览器(如果是手机的话,则会显示手机具体类型)
  • Accept: 告诉服务器,可以支持处理的数据类型
  • Accept-Lanauage:  告诉服务器,可以支持的语言
  • Accept-Encoding:  告诉服务器,可以支持解压哪些格式的数据
  • Referer:  告诉服务器该网页是从哪个页面链接过来的
  • Connection :  连接的状态,这里表示保持连接

而以post的话:

请求头中多了两个:

  • Content-Type: application/x-www-form-urlencoded : 请求体的url编码
  • Content-Length: 41 : 提交的请求体的长度

请求体刚好是41字节:

yuwen1=12&shuxue1=23&yuwen2=34&shuxue2=55

4.response 响应

客户端请求包含了4个部分:

  • 响应行(包含响应码)、
  • 响应头、
  • 空行、
  • 响应体

常见的响应码有:

  • 200~299 : 请求成功,服务器成功返回数据,比如200(get/post请求成功)
  • 300~399 : 服务端收到了请求 但是需要客户端作进一步操作,比如304(告诉客户端使用缓存)
  • 400~499 : 请求错误(客户端问题),比如404(资源不存在)
  • 500~599 :内部服务器错误,比如500(服务器内部错误)

示例如下:

  • Server : 描述服务器端类型
  • Accept-Ranges : 表示当前返回的数据单位
  • Last-Modified :  表示请求的资源的最后被修改的时间,这个字段的作用就是用于缓存服务器机制,用于判断缓存服务器中的资源是否过期,是否需要从源服务器更新。
  • ETag : 表示请求资源的版本,如果该资源发生变化,那么这个属性也会跟着变,和Last-Modified一样,可以用来判断缓存中的资源是否过期
  • Content-Type : 响应的类型
  • Content-Length : 响应体的数据长度
  • Date : 数据响应的时间

未完待续,下章学习servlet~

3.Android网络编程-http介绍的更多相关文章

  1. 1.Android网络编程-HTML介绍

    1.HTML介绍 超文本标记语言(HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言. 在Eclipse下则可以使用自带的浏览器浏览html: 2.H ...

  2. 2.Android网络编程-web介绍以及Tomcat安装使用

    1.CS和BS CS:Client/Server 客户端和服务器,这种软件往往需要安装.比如QQ.迅雷.播放器. 优点 :  可以减轻服务器端压力,将部分代码写到客户端,并且界面很美观. 缺点 :  ...

  3. Android网络编程系列 一 TCP/IP协议族

    在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...

  4. Android网络编程系列 一 Socket抽象层

     在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽 ...

  5. 转 Android网络编程之使用HttpClient批量上传文件 MultipartEntityBuilder

    请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 http://www.tuicool.com/articles/Y7reYb 我曾在<Andr ...

  6. Android网络编程(一)HTTP协议原理

    相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley使用方法全解析 A ...

  7. Android 网络编程 记录

    简单介绍 看了深入理解Android网络编程感觉不错.今天对Android网络编程进行了要点记录. 内容 Android基于网络技术和编程实践 要点 定义 描写叙述 IP协议 用于报文交换网络的一种面 ...

  8. Android网络编程(三)Volley使用方法全解析

    相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection 前言 Volley想必许多人都用过,为了建立网络编程的知识 ...

  9. Android网络编程(十)Retrofit2后篇[注解]

    G相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley用法全解析 An ...

随机推荐

  1. 16_Python设计模式

    1.设计模式概述 1.设计模式代表了一种最佳的实践,是被开发人员长期总结,用来解决某一类问题的思路方法,这些方法保证了代码的效率也易于理解 2.设计模式类型:根据23种设计模式可以分为三大类     ...

  2. CSS居中的多种方法

    1.水平居中:text-align 与 inline-block 的配合 <div id = "div_center_align"> <div id = &quo ...

  3. jenkins iOS自动打包

    1.Jenkins配置 采用命令行下载配置Jenkins,防止产生权限问题 1)先安装brew,打开命令行,输入:/usr/bin/ruby -e "$(curl -fsSL https:/ ...

  4. 一篇文章教你快速上手接口管理工具swagger

    一.关于swagger 1.什么是swagger? swagger是spring fox的一套产品,可以作为后端开发者测试接口的工具,也可以作为前端取数据的接口文档. 2.为什么使用? 相比于传统的接 ...

  5. 【GIT-精讲】从零玩转Git/GitHub/GitLab

    关于版本控制 一.什么是版本控制 版本控制(Version Control Systems)版本控制(Revision control)是一种软件工程技巧 在开发的过程中,确保由不同人所编辑的同一档案 ...

  6. MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解

    文章出处:https://www.souyunku.com/2018/07/30/mysql/?utm_source=tuicool&utm_medium=referral MySQL/Inn ...

  7. [Java并发编程之美]第2章 并发编程的其他基础知识 补充知识

    基本概念 并行与并发 并行:单位时间内多个任务同时执行(多核CPU). 并发:同一时间段内多个任务同时都在执行(CPU时间片轮转). 线程安全性问题 线程安全问题:指多个线程同时读写一个共享资源而没有 ...

  8. js 去掉字符串最后一个逗号:笑死我了

    今天突然遇到js 去掉字符串最后一个逗号的问题,本想偷懒搜个代码吧,没想到看到百度的第一条记录是这么一篇文章. 网易博客: http://blog.163.com/li_crane/blog/stat ...

  9. OneNote代码高亮完美解决方案(全网最全)

    0. 引子 OneNote作为一款记笔记的软件,免费实用,有助于自己形成树状结构知识框架.但是它有一个令人头疼的问题就是:无法代码高亮.而NoteHightlight2016正是解决这个问题的完美利器 ...

  10. Redis单机安装以及集群搭建

    今天主要来看一下Redis的安装以及集群搭建(我也是第一次搭建). 环境:CentOS 7.1,redis-5.0.7 一.单机安装 1.将Redis安装包放置服务器并解压 2.进入redis安装目录 ...