0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Http是什么

汽车电子技术 来源:程序猿知秋 作者:程序猿知秋 2023-01-20 15:27 次阅读

Http是什么?

基本概念

  • **HTTP是超文本传输协议(HyperText Transfer Protocol)的简称,它建立在C/S架构的应用层协议。

    **

  • **HTTP、FTP、Telnet等协议都是建立在TCP/IP协议基础上的,而TCP/IP协议是协议层的内容,它定义了计算机间通信的基础协议。

    **

  • **在HTTP协议中,客户端负责发起一个Request,该Request中含有请求方法、URL、协议版本等信息,服务端在接受到该Request后会返回一个Response,该Response中含有状态码、响应内容等信息,这一模型称为请求/响应模型。

    **

  • HTTP协议通信的核心是HTTP报文,我们将其分为请求报文和响应报文。其中,由客户端发出的HTTP报文称为请求报文,由服务端发出的报文称为响应报文.

请求报文:请求报文通常由浏览器来发起,当我们访问一个网页或者请求一个资源的时候都会产生请求报文

  • 请求报文通常由HTTP请求行、请求头、消息体(可选)三部分组成
// 基本请求信息
Request URL: https://www.baidu.com 
Request Method: GET      
Status Code: 200 OK    
Remote Address: 111.206.209.78:443
Referrer Policy: unsafe-url


//请求头
Accept: application/json, text/javascript, q=0.01
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: no-cache
Connection: keep-alive
Cookie: BIDUPSID=344D077FD6A3F97616DBD66A24EBDC96
Host: zhidao.baidu.com
Pragma: no-cache
Referer: https://zhidao.baidu.com/question/366757430246244692.html
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
X-ik-ssl: 1
X-Requested-With: XMLHttpRequest


//请求参数
...

请求参数解析

  • **Host: 请求目标的网站

    **

  • **Connection: 默认为“keep-Alive“,默认支持长连接

    **

  • **Cache-Control:这玩意跟缓存有关,其中no-cache表示无缓存

    **

  • **User-Agent:告诉serve 这个client的身份,一般由浏览器决定,比如:浏览器类型,版本等等

    **

  • **Accept:以及后面的Accept打头的都是表明client能够接收的种类和类型

    **

  • Cookie:一般会将登录的一些信息放在cookie中

响应报文:响应报文是指在服务端接收并处理了客户端的请求信息以后,服务端发送给客户端的HTTP报文

// 响应状态 ,200 表示成功
HTTP/1.1 200 OK


/* 响应头部 */
Access-Control-Allow-Headers: X-ik-ssl,X-ik-token,X-ik-utdata,X-ik-appid,X-ik-cuid,X-ik-fc,X-swan-version,X-ik-tries,X-fail,X-ik-appversion,X-ik-appname,Content-Type,SWAN_UPGRADE_CHECK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 21
Content-Type: text/html
Date: Fri, 23 Dec 2022 11:49:43 GMT
Not-Try: 0
Server: Apache
Vary: Accept-Encoding
Wait: 2


/* 响应信息 */
...

响应参数解析

  • **Http/1.1 200 OK:200表示返回的状态码是正常,OK则是描述性的状态码

    **

  • **Date:表示服务器响应的时间

    **

  • **Server: 响应客户端的服务器。

    **

  • **Content-Length:表示服务器返回给客户端正文的字节流长度

    **

  • **Content-Type:表示正文的类型

    **

  • Content-Encoding:文档类型的编码方式,服务器端采用gzip的形式进行了文档压缩

Http的基本应用

常见的方法有GET、POST 两种http请求方式

  • **GET:最为常见的一种请示方式。当客户端从服务器读取文档或者通过一个链接来访问页面的时候,都是采用GET方式来请求的

    **

  • **POST:POST克服了GET方式对参数长度存在限制的缺点,以键-值形式将参数封装在HTTP请求中,所以从理论上讲它对参数长度没有限制,但是实际上各个服务器会规定对POST提交数据大小进行限制;

    **

  • 注: POST的安全性比GET的高,因对用户来讲参数传递过程是不可见的。 类似用户登录之类的基本都是采用post形式

HTTP中的五种响应码

  • 1xx:指示信息--表示请求已接收,继续处理
  • 2xx:成功--表示请求已被成功接收、理解、接受
  • 3xx:重定向--要完成请求必须进行更进一步的操作
  • 4xx:客户端错误--请求有语法错误或请求无法实现
  • 5xx:服务器端错误--服务器未能实现合法的请求

!微信截图_20230105161930.png

编辑

HttpWebRequest 简单的HTTP请求案例

GET方式:

public static string doGet()
{
    string url="www.baidu.com";
  //创建
  HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
  //设置请求方法
  httpWebRequest.Method = "GET";
  //请求超时时间
  httpWebRequest.Timeout = 30000;
  //发送请求
  HttpWebResponse response=null;
  Stream s = null;
  StreamReader sRead = null;
  string postContent = null;
  try
  {
    //获得响应流
    response = (HttpWebResponse)httpWebRequest.GetResponse();
    s = response.GetResponseStream();
    sRead = new StreamReader(s);
    postContent = sRead.ReadToEnd();
  }
  catch (WebException ex)
  {
    response = ex.Response as HttpWebResponse;
    log.Error(ex.Message.ToString(), ex);
  }
  finally
  {
    if(sRead != null)
    {
      sRead.Close(); 
    }
    if(s != null)
    {
      s.Close();
    }
    if(response != null)
    {
      response.Close();
    }
  }
  return postContent;//返回Json数据
}

POST方式:

public static string doPost()
{
  string strURL = "wwww.baidu.com";
  //创建一个HTTP请求  
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
  //Post请求方式  
  request.Method = "POST";
  //内容类型
  request.ContentType = "application/json";
  request.Accept = "application/json";
  //将Json字符串转化为字节  
  byte[] payload = System.Text.Encoding.UTF8.GetBytes(jsonParas);
  //设置请求的ContentLength   
  request.ContentLength = payload.Length;
  //发送请求,获得请求流 
  Stream writer;
  try
  {
    writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
  }
  catch (Exception ex)
  {
    log.Error("连接服务器失败!" + ex.Message.ToString(), ex);
    throw ex;
  }
  //将请求参数写入流
  writer.Write(payload, 0, payload.Length);
  writer.Close();//关闭请求流
  HttpWebResponse response = null;
  Stream s = null;
  StreamReader sRead = null;
  string postContent = null;
  try
  {
    //获得响应流
    response = (HttpWebResponse)request.GetResponse();
    s = response.GetResponseStream();
    sRead = new StreamReader(s);
    postContent = sRead.ReadToEnd();
  }
  catch (WebException ex)
  {
    response = ex.Response as HttpWebResponse;
    log.Error(ex.Message.ToString(), ex);
  }
  finally
  {
    if (sRead != null)
    {
      sRead.Close();
    }
    if (s != null)
    {
      s.Close();
    }
    if (response != null)
    {
      response.Close();
    }
  }
  return postContent;//返回Json数据
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HTTP
    +关注

    关注

    0

    文章

    466

    浏览量

    30315
  • 传输协议
    +关注

    关注

    0

    文章

    68

    浏览量

    11337
  • 架构
    +关注

    关注

    1

    文章

    484

    浏览量

    25200
收藏 人收藏

    评论

    相关推荐

    HTTP、TCP、QUIC协议详解

    HTTP 3.0 是 HTTP 协议的第三个主要版本,前两个分别是 HTTP 1.0 和 HTTP 2.0 ,但其实 HTTP 1.1 我认
    发表于 07-25 11:58 1328次阅读

    什么是HTTP协议?HTTP协议的基本特点和发展历程

    上期文章小编给大家介绍了一些关于MQTT协议的基础知识,今天我们来了解另一个应用层协议——HTTP协议。
    发表于 08-04 09:52 572次阅读
    什么是<b class='flag-5'>HTTP</b>协议?<b class='flag-5'>HTTP</b>协议的基本特点和发展历程

    33.033 HTTP协议 初识HTTP协议

    编程HTTP
    充八万
    发布于 :2023年07月19日 14:28:59

    HTTP性能

    HTTP性能              HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏
    发表于 01-08 13:50 871次阅读

    什么是HTTP

    什么是HTTP  英文原义:Hyper Text Transfer Protocol 中文释义:超文本传输协议 注  解:该
    发表于 02-23 11:40 595次阅读

    HTTP,HTTP协议的作用是什么?

    HTTP,HTTP协议的作用是什么? HTTP:Hypertext Transfer Protocol 超文本传输协议(HTTP)是应用层协议,由于其简捷、快速的方式,适用于分
    发表于 03-22 10:45 2.5w次阅读

    HTTP协议培训教程资料

    HTTP协议培训教程资料 协议基础  HTTP(HyperText Transfer Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议
    发表于 03-22 10:47 541次阅读

    http抓包神器(http analyzer )下载

    HTTP Analyzer Full V7是一款完全汉化免费的绿色版HTTP协议捕捉分析工具,这款http analyzer 绿色版可以进行网络抓包等功能,马上下载这款http ana
    发表于 12-14 08:35 0次下载

    http和tcp/ip、http https之间的关系和区别

    http和tcp/ip、http和https之间的关系和区别
    的头像 发表于 01-10 14:30 6895次阅读

    http和https有什么区别,为什么https会取代http

    大家都知道当前https的使用更为普遍,为什么https会取代http,其中的原因恒讯科技为大家整理在本文,共有11点希望可以帮助大家更了解网站数据安全。 1、传输方式 http使用的是明文
    的头像 发表于 05-11 16:02 1655次阅读

    HTTP的状态消息

     HTTP状态消息是指HTTP服务器在响应客户端请求时返回的状态信息。状态消息由数字状态码和可选的文本描述组成,主要有以下几种类型
    发表于 05-06 16:01 296次阅读

    HTTP/3 来了,它比 HTTP/1 和 HTTP/2 强在哪儿?

    前言通过这篇文章你可以了解到:1.什么是HTTP协议?2.HTTP1.1/2.0/3.0的发展变更3.HTTP1.1/2.0/3.0的主要区别4.HTTP3.0进化发展的意义什么是
    的头像 发表于 08-28 15:35 912次阅读
    <b class='flag-5'>HTTP</b>/3 来了,它比 <b class='flag-5'>HTTP</b>/1 和 <b class='flag-5'>HTTP</b>/2 强在哪儿?

    什么是HTTP?什么是HTTPS?HTTP与HTTPS的区别在哪?

    每天都在上网,在搜索东西的时候,你有发现网址有什么不同吗?本文就来谈谈HTTP与HTTPS有什么不同。
    的头像 发表于 08-27 09:15 1510次阅读
    什么是<b class='flag-5'>HTTP</b>?什么是HTTPS?<b class='flag-5'>HTTP</b>与HTTPS的区别在哪?

    23张图带你弄懂HTTP协议!

    HTTP 协议发明到现在,经过了几次版本修改,分别是HTTP/0.9,HTTP/1.0,HTTP/1.1以及HTTP/2。现在市面上主要
    发表于 10-16 15:57 548次阅读
    23张图带你弄懂<b class='flag-5'>HTTP</b>协议!

    HTTP 中GET 和 POST 的区别

    一、概述 HTTP 的请求报文 GET 方法的特点 POST 方法的特点 GET 和 POST 的区别 二、HTTP 的请求报文 首先我们要解决的第一个问题是:GET 和 POST 是什么? GET
    的头像 发表于 11-11 14:40 595次阅读
    <b class='flag-5'>HTTP</b> 中GET 和 POST 的区别