http实测抓包

HTTP Client程序

HEAD: 只请求页面的首部。

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

POST: 请求服务器接受所指定的文档作为对所标识的URL的新的从属实体。

(1)HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。

(2)在FORM提交的时候,如果不指定Method,则默认为GET请 求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;

GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

(3)GET 这个是浏览器用语向服务器请求最常用的方法。POST这个方法也是用来传送数据的,但是与GET不同的是,使用POST的时候,数据不是附在URI后面传递的,而是要做为独立的行来传递,此时还必须要发送一个Content_length标题,以标明数据长度,随后一个空白行,然后就是实际传送的数据。网页的表单通常是用POST来传送的。

代码部分

//部分接口经过封装,细节不放出
void client_http()
{
    char url[128] = {"http://123.139.59.166"};
    int port = 10102;
    int ret;
    uint8_t type = 1;
    int size = 1024;
    char* sptr = ext_sio_recv_buff;//输入缓冲区
    char data[128] = {0};
    //建立连接
    ret = http_setup(1, url, port, http_result_cb);
    if (ret == 0)
    {
        ext_echo("\r\nhttp setup seccess.");
    }
    else
    {
        ext_echo("\r\nhttp setup fail.");
    }
    sleep(1000);
    while(1)
    {
        ext_input_gets("\r\n input 1 get http, 2 head https, 3 post http, 4 close, 5 exit;");
        switch (atoi(sptr))
        {
                //GET请求
            case 1:
            {
                ret = http_get(1, 0, size, false);
                if (0 == ret)
                {
                    ext_echo("\r\n http_get success");
                }
                else
                {
                    ext_echo("\r\n http_get fail");
                }
                break;
            }
                //HEAD请求
            case 2:
            {
                ret = http_head(1, false);
                if (0 == ret)
                {
                    nwy_ext_echo("\r\n http_head success");
                }
                else
                {
                    nwy_ext_echo("\r\n http_head fail");
                }
                break;
            }
                //POST请求
            case 3:
            {
                ext_input_gets("\r\n input data:");
                strcpy(data, sptr);
                int len = sizeof(data);
                ret = http_post(1, type, data, len, false);
                if (0 == ret)
                {
                    ext_echo("\r\n http_post success");
                }
                else
                {
                    ext_echo("\r\n http_post fail");
                }
                break;
            }
                //关闭连接
            case 4:
            {
                ret = http_close(false);
                if (0 == ret)
                {
                    ext_echo("\r\n http_close success");
                }
                else
                {
                    ext_echo("\r\n http_close fail");
                }
                break;
            }
                //退出
            case 5:
            {
                ext_echo("\r\n exit success");
                return ;
            }
            default: 
            {
                break;
            }
        }
    }


}

实验结果

应先拨号,建立http连接时会自己建立tcp连接

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

抓包分析

在这里插入图片描述

在这里插入图片描述

先建立tcp连接进行三次握手,然后发送请求

在这里插入图片描述

数据传输,因为分包传输每个包都会有响应ACK,收到之后再把多个包的数据组装到一起

在这里插入图片描述

关闭连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值