Linux中模拟GET、POST请求

2023-05-16

1.概述

在Linux系统中,可以利用命令来模拟HTTP请求中的GET、POST、PUT等请求,本文将阐述基于curl命令来模拟GET与POST请求,PUT、DELETE等请求与POST类似,同时分享一下本人的踩坑实录。

2.发送GET请求

在利用curl发送get请求时,需要注意携带参数的形式,因为get请求方式是在url中携带参数。若携带的参数是json形式,则请求方式如下:

curl "http://localhost:8080/video/cloud/visual/doorbell/live/isOnline?params='{"deviceNum":"33010201026"}'"

然而,当我信心满满以为上述请求能够正常进行时,这时居然给我上了一课,在接口内部进行JSON转换时,竟然抛出了异常,于是我又利用postman在本地服务重新测试了一遍,没有任何问题。这说明上述方式携带参数的方式是有问题的,在查阅了大量博客后,发现讲的都是大同小异,实践之后也毫无效果。于是咨询大佬,说要进行urlencode转码,恍然觉悟。找了个在线转码工具,对参数进行了转码,转码之后请求方式如下:

curl "http://localhost:8080/video/cloud/visual/doorbell/live/isOnline?params=%7b%22deviceNum%22%3a%2233010201026%22%7d"

转眼便请求成功。事实上,通过查阅API可以发现,可以直接以命令的方式在路径中进行urlencode转码,主要方式如下:

curl -X GET -G --data-urlencode "params={"deviceNum":"33010201026"}" "http://localhost:8080/video/cloud/visual/doorbell/live/isOnline"

3.发送POST请求

发送post请求时,一般会将参数放在body体中,也可能会放在url中,放在url中相对较少。本文也将从上述两种情况来分析:
(1)参数放于body体中

curl "http://localhost:8080/video/cloud/visual/doorbell/config/alarm/ring/update" -H "Content-Type:application/json" -X POST -d '{"deviceNum": "33010201026027028334","alarm":1}'

(2)参数放于url中

curl -d '{"deviceNum": "33010201026027028334","alarm":1}' "http://localhost:8080/video/cloud/visual/doorbell/config/alarm/ring/update"

4.小结

1.在Linux中模拟get请求时,需要进行urlencode转义;
2.本文讲述的模拟get请求时,只阐述在url中携带参数的情况;
3.在模拟post请求时,可以在url或body中传递参数,方式如上,具体指令含义可以查看curl指令集合。

5.参考文献

1.https://blog.csdn.net/thinkerman26/article/details/89026245

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

Linux中模拟GET、POST请求 的相关文章

  • 为什么 ld 无法从 /etc/ld.so.conf 中的路径找到库?

    我想添加 opt vertica lib64进入系统库路径 所以我执行以下步骤 1 添加 opt vertica lib64 into etc ld so conf 然后运行ldconfig 2 检查 bash ldconfig p gre
  • 错误:NVIDIA-SMI 失败,因为无法与 NVIDIA 驱动程序通信

    NVIDIA SMI 抛出此错误 NVIDIA SMI 失败 因为无法与 NVIDIA 通信 司机 确保安装了最新的 NVIDIA 驱动程序并且 跑步 我清除了 NVIDIA 并按照提到的步骤重新安装了它here https askubun
  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 如何确保 numpy BLAS 库可用作动态加载库?

    The theano安装文档 http www deeplearning net software theano install html troubleshooting make sure you have a blas library指
  • 如何在 Linux 主机上的 docker 容器中挂载目录 [重复]

    这个问题在这里已经有答案了 我想将一个目录从 docker 容器挂载到本地文件系统 该目录是网站根目录 我需要能够使用任何编辑器在本地计算机上编辑它 我知道我可以跑docker run v local path container path
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • 使标签充当输入按钮

    我怎样才能做一个 a href http test com tag test Test a 就像表单按钮一样 通过充当表单按钮 我的意思是 当单击链接执行操作时method get 或 post 以便能够通过 get 或 post 捕获它
  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • 如何使用AWK脚本检查表的所有列数据类型? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在这里 我正在检查表中第一列的数据类型 但我想知道AWK中表的所有列数据类型 我尝试过 但只能获得一列数据类型 例如 Column 1
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • 停止服务时单元陷入故障状态(状态=143)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的问题 我有 CentOS 和 java 进程在上面运行 Java进程是通过启动 停止脚本来操作的 它也创建了 java 实例的 p
  • 如何在Python中独立于语言安装(linux)获取用户桌面路径

    我找到了 如何找到用户桌面的路径 的几个问题和答案 但在我看来它们都已失效 至少我找到的那些 原因是 如果用户安装的 Linux 不是英语 他或她的桌面很可能位于除 Desktop 例如 对于瑞典语 我相信它是在 Skrivbord 谁知道
  • 如何在使用cmake完成make后打印消息?

    我正在尝试使用 CMake 完成构建过程后打印消息 我只是想在之后通知用户make命令已完成 没有任何错误 我该怎么做 我试过add custom target 但我无法选择何时跑步 另外 我尝试过add custom command 它再
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • sleep 0 有特殊含义吗?

    我看到很多用法sleep 0在我的一个客户项目中 代码看起来像这样 while true sleep 0 end 阅读一些像这样的答案this https stackoverflow com questions 3727420 signif
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构

随机推荐

  • idea中module项目没有蓝色小方块问题

    问题描述 xff1a idea项目没有蓝色小方块问题 把项目中module删除之后重新添加 xff0c 发现项目右下角没有 34 蓝色小方块 34 xff0c maven也不能识别 xff0c 如下图 xff1a 解决方案 xff1a 打开
  • TCP通信聊天服务端和客户端(C/C++语言开发)附完整源码

    TCP通信源码 一 服务端源码二 客户端源码三 效果 距离上次学Python写的Python实现简单聊天室已经过去好久了 xff0c 现在学c 43 43 又写了一遍 xff0c 其实过程差不多 xff0c 无非是语法的变化 xff0c 目
  • 淘宝cp210X提示“VeriFone USB Modem”无法匹配驱动

    淘宝cp210X提示 VeriFone USB Modem 无法匹配驱动 前段时间 xff0c 在淘宝上买了cp210X usb转串口芯片 xff0c 安装 调试板驱动CP210x Windows Drivers xff08 0积分下载地址
  • 2021年 秋招面试记录

    2021年 春招面试记录 大华 大华一面 xff1a 7 13 list map set IOC AOP 单例模式 在哪使用 过滤 xff1f 提取数字 43 排序 大华二面 xff1a 7 27 mybatis缓存 二级缓存有什么问题 r
  • Java面试必背八股文[1]:Java 基础

    面向对象和面向过程的区别 面向过程 xff1a 面向过程是一种以事件为中心的编程思想 xff0c 编程的时候把解决问题的步骤分析出来 xff0c 然后用函数把这些步骤实现 xff0c 在一步一步的具体步骤中再按顺序调用函数 面向对象 xff
  • Java面试必背八股文[3]:Java 集合

    Java 集合框架图 String 为什么是不可变的 简单的来说 xff1a String 类中使用 final 关键字修饰字符数组来保存字符串 xff0c private final char value xff0c 所以 String
  • Java面试必背八股文[2]:Java 多线程

    简述线程 程序 进程的基本概念 xff1f 程序是含有指令和数据的文件 xff0c 被存储在磁盘或其他的数据存储设备中 xff0c 也就是说程序是静态的代码 进程是程序的一次执行过程 xff0c 是系统运行程序 资源分配 的基本单位 xff
  • Java面试必背八股文[4]:JVM相关

    什么是JMM模型 xff1f JMM并不真实存在 xff0c 只是一种规范 xff0c 通过这种规范来让定义程序中各个变量的访问方式 JVM运行程序的实体是线程 xff0c 而每个线程创建时JVM都会为其创建一个工作内存 有些地方称为栈空间
  • Java面试必背八股文[5]:MySQL

    Drop Delete TRUNCATE的区别 drop drop直接删掉表 xff1b drop语句将表所占用的空间全释放掉 drop语句将删除表的结构被依赖的约束 xff08 constrain xff0c 触发器 xff08 trig
  • Java面试必背八股文[6]:Redis

    使用 Redis 有哪些好处 xff1f 1 速度快 xff0c 因为数据存在内存中 xff0c 类似于 HashMap xff0c HashMap 的优势就是查找和操作的时间复杂度都是 O xff08 1 xff09 2 支持丰富数据类型
  • Java面试必背八股文[7]:Spring

    什么是 Spring Framework xff1f Spring 是一个开源应用框架 xff0c 旨在降低应用程序开发的复杂度 它是轻量级 松散耦合的 它具有分层体系结构 xff0c 允许用户选择组件 xff0c 同时还为 J2EE 应用
  • Java面试必背八股文[8]:MyBatis

    MyBatis Mybatis是一个优秀的持久层ORM框架 xff0c 它对jdbc的操作数据库的过程进行封装 xff0c 使得开发者只需要关注SQL本身 不需要花费精力去处理一些重复和繁琐的步骤 通过java对象和statement中的s
  • Java面试必背八股文[9]:SpringBoot

    什么是 Spring Boot xff1f Spring Boot 是由 Pivotal 团队提供的全新框架 xff0c 其设计目的是用来简化 Spring 应用的初始搭建以及开发过程 该框架使用了特定的方式来进行配置 xff0c 从而使开
  • SIP鉴权简介

    介绍 SIP提供了一个无状态 基于挑战的鉴权机制 xff0c 该机制基于HTTP的鉴权 任何时候一个UA或代理服务器收到一个请求 除CANCEL和ACK xff0c 都可以挑战请求的发起者要求其提供身份的保证 一旦发起者判定了身份 xff0
  • Java面试必背八股文[10]:RabbitMQ

    什么是 rabbitmq 采用 AMQP Advanced Message Queuing Protocol xff0c 高级消息队列协议 xff09 的一种消息队列技术 最大的特点就是消费并不需要确保提供方存在 xff0c 实现了服务之间
  • Java面试必背八股文[11]:计算机网络

    OSI与TCP IP各层的结构 xff1f 答 OSI分层 xff08 7层 xff09 xff1a 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 TCP IP分层 xff08 4层 xff09 xff1a 网络接口层 网际层
  • Java面试必背八股文[12]:计算机操作系统

    进程和线程有什么区别 xff1f 进程 xff08 Process xff09 是系统进行资源分配和调度的基本单位 xff0c 线程 xff08 Thread xff09 是CPU调度和分派的基本单位 xff1b 线程依赖于进程而存在 xf
  • 2022年总结

    2022年总结 人生的转折痛并快乐着愿岁月静好未来加油吧 人生的转折 2022年 人生的转折点了 xff0c 研究生毕业 xff0c 再也没有了那个 学生 的身份 xff0c 新的篇章 xff0c 如何续写 xff1f 2022年6月20日
  • 【进阶】"结构体嵌入共联体"在协议解析中的神操作!

    1 聊一聊 34 I was alone but not lonely 34 今天的文章话题引出来自bug技术交流群 xff0c 主要是想把这种协议解析和设计的方式分享给大家 xff01 2 正文部分 1 话题引出 bug技术交流群一个小哥
  • Linux中模拟GET、POST请求

    1 概述 在Linux系统中 xff0c 可以利用命令来模拟HTTP请求中的GET POST PUT等请求 xff0c 本文将阐述基于curl命令来模拟GET与POST请求 xff0c PUT DELETE等请求与POST类似 xff0c