socket封装HTTP请求

2023-05-16

之前写过两个socket封装的HTTP GET请求,可是知其然,不知所以然。这次写POST请求就有点懵逼了。

还是从大佬的文章出发:https://blog.csdn.net/a19881029/article/details/14002273

请求的格式如图,严格按照这个格式,否则服务器返回400

1、每个HTTP选项末尾都加\r\n

2、HTTP选项的末尾要加上一个空白行,所以末尾要\r\n\r\n

3、POST请求正文放在HTTP请求的最后

 

键值对:IMEI=%s&model=%s&modelDetail=%s&currentVersion=%s&operator=%d%02d&language=%s

sprintf(buf,"POST /phone/rom/active HTTP/1.1\r\nHost: %s\r\nConnection: close\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\nAccept: */*\r\n\r\n%s\r\n", g_sale_domain, strlen(json), json);

json存放了格式化好的键值对。

选项说明

1、Connection 头(header) 决定当前的事务完成后,是否会关闭网络连接。如果该值是“keep-alive”,网络连接就是持久的,不会关闭,使得对同一个服务器的请求可以继续在该连接上完成。

2、Content-Type

application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text/plain: 数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。postman软件里标的是RAW

application\json格式,C可以通过CJson去封装json数据,再通过POST发送请求

3、Content-Length请求实体长度,一开始只设置了Content-Type:application/x-www-form-urlencoded没有设置Content-Length,导致服务器一直无法接受到我的请求参数。。

4、Accept 请求头用来告知客户端可以处理的内容类型,这种内容类型用MIME类型来表示。借助内容协商机制, 服务器可以从诸多备选项中选择一项进行应用,并使用 Content-Type 应答头通知客户端它的选择

 

5、Host:域名

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

socket封装HTTP请求 的相关文章

随机推荐

  • 387. 字符串中的第一个唯一字符

    387 字符串中的第一个唯一字符 给定一个字符串 s xff0c 找到 它的第一个不重复的字符 xff0c 并返回它的索引 如果不存在 xff0c 则返回 1 示例 1 xff1a 输入 s 61 leetcode 输出 0 示例 2 输入
  • 496. 下一个更大元素 I

    496 下一个更大元素 I C代码 xff1a 暴力 span class token keyword int span span class token operator span span class token function ne
  • 1396. 设计地铁系统

    1396 设计地铁系统 C代码 xff1a 哈希表运用 span class token keyword typedef span span class token keyword struct span span class token
  • Virtual Serial Port Driver Pro 10.0.992 下载安装使用说明

    对应的下载资源链接如下 xff1a https download csdn net download lizhu csdn 86411873 压缩包文件夹内容如下 双击Setup exe 默认参数直接下一步 安装完成之后 xff0c 不要打
  • mach-mini2440.c:155: error: array type has incomplete element type

    我按照最新mini2440 linux移植开发指南时 xff0c 在操作 移植Nand 驱动并更改分区信息 时 xff0c 按照文档修改后 xff0c 再编译zImage时 xff0c 总是编译通不过 xff0c 下面是出错信息 arch
  • Visual Assist 在VS2022中安装失败问题

    直接找到C Users xxxxx AppData Local Microsoft VisualStudio 17 0 xxxxx 文件夹 直接右击删除这个文件夹 注意要在VS2022关闭时再删除 可以先做一次备份 正常运行安装VA X S
  • linux c 获取文件的时间信息

    gt File Name hello c gt Author lizhu gt Mail gt Created Time 2015年11月20日 星期五 10时30分20秒 include lt time h gt include lt s
  • Linux下C语言来检测USB设备以及自动区分U盘和硬盘并自动挂载

    别的不说直接上代码 作用就是在linux系统上可以直接判断哪个是USB设备节点 xff0c 哪个是硬盘设备节点 xff0c 如果想挂载某一个节点 想屏蔽某一个USB孔的USB设备 xff0c 具体代码 xff0c 正在整理中 xff0c 下
  • glib 交叉编译步骤

    借鉴文章网址为 wiki beyondlogic org index php title 61 Cross Compiling BlueZ Bluetooth tools for ARM 编译glib需要zlib libffi两个库文件我使
  • STM32中SysTick、FCLK、SYSCLK、HCLK

    http rmingwang com the stm32 systick fclk sysclk hclk html 转载原文 在STM32中 xff0c 有五个时钟源 xff0c 为HSI HSE LSI LSE PLL HSI是高速内部
  • qglobal.h:45: error: C1083: 无法打开包括文件:

    看了很多人的错误调试记录就是不行 xff0c 后来在百度知道里面看到这个 xff0c 添加进入后就可以了 在系统环境变量path 添加下面内容即可 SystemRoot system32
  • 卡尔曼滤波器学习笔记(二)

    扩展卡尔曼滤波器的原理及应用 经典的卡尔曼滤波只适用于线性且满足高斯分布的系统 xff0c 但实际工程中并不是这么简单 xff0c 比如飞行器在水平运动时有可能伴随着自身的自旋 xff0c 此时的系统并不是线性的 xff0c 这时就需要应用
  • 串口回环测试

    串口lookback测试 基础知识 通用异步收发传输器 xff08 Universal Asynchronous Receiver Transmitter xff09 xff0c 通常称作UART UART 是一种通用的数据通信协议 xff
  • STM32学习--USART

    串口工作方式 1 查询 xff1a 串口程序不断循环查询 xff0c 看看有没有数据需要它发送 2 中断 xff1a 平时串口只要打开中断即可 如果有中断来即需要传输数据 xff0c 它就马上进行数据的传输 STM32编程 xff1a 1
  • Atitit HTTP 认证机制基本验证 (Basic Authentication) 和摘要验证 (Digest Authentication)attilax总结Atitit HT

    Atitit HTTP 认证机制 基本验证 Basic Authentication 和摘要验证 Digest Authentication attilax总结 1 1 最广泛使用的是基本验证 Basic Authentication 和摘
  • 实验二 读取和理解激光雷达数据

    1 体验内容 xff08 1 xff09 为rplidar添加USB权限 注 xff1a 实验室的rplidar A2买得比较早 xff0c 硬件版本可能与github程序不匹配 xff0c 出现运行错误 xff0c 解决方法为到 Wind
  • Linux下使用Netfilter框架编写内核模块(统计协议层ping特定地址丢包数)

    一 linux内核中neitfilter的处理过程 1 5个HOOK点的执行点说明 xff1a 数据包从进入系统 xff0c 进行IP校验以后 xff0c 首先经过第一个HOOK函数NF IP PRE ROUTING进行处理 xff1b 然
  • 基于TCP 实现客户端之间通信【1】

    前段时间学习了基于TCP协议下实现服务器与一个客户端的通信 xff0c 服务器与多个客户端之间的通信 xff0c 以及客户端之间的互相通信 下面就是我写的利用TCP和多线程技术实现客户端之间互相通信的代码 xff1a 服务器端 xff1a
  • 回环接口(loop-back/loopback)

    回环接口 xff08 loop back loopback xff09 Moakap 整理 Loopback 接口是一个虚拟网络接口 xff0c 在不同的领域 xff0c 其含义也大不一样 1 xff0e TCP IP 协议栈中的 loop
  • socket封装HTTP请求

    之前写过两个socket封装的HTTP GET请求 xff0c 可是知其然 xff0c 不知所以然 这次写POST请求就有点懵逼了 还是从大佬的文章出发 xff1a https blog csdn net a19881029 article