基于TCP协议实现HTTP_GET请求

2023-11-07

前言

之前一直使用MQTT的物联网协议,偶然间发现互联网中HTTP的通信协议也应用广泛,想要更好的理解这个协议,可以基于tcp来实现这个协议,这样可以更理解底层组包结构。

http与mqtt类似都是基于tcp(udp)的基础上规范了传输的报文,其报文格式为:

下面以苏宁的获取时间API为例,其API为:

http://quan.suning.com/getSysTime.do 

这里先使用GET方法请求

其请求方法为 GET

URL为/getSysTime.do

协议版本为HTTP/1.1

所以请求的这一帧TCP数据为:

GET /getSysTime.do HTTP/1.1
Host:quan.suning.com


其Host字段为必填项,目的是选择使用这个域名的网站程序对请求做响应。

GET的这个API其服务器为quan.suning.com也可以使用CMD的ping目录来查看具体ip(但是没必要)

端口号直接使用http最常用的端口号80,如果是https其默认端口号为443 

然后打开TCP客户端,连接到这个服务器,发送这个GET请求:

然后就可以获取到这个API提供的JSON数据了

下面是一些常用的API网站:

UomgAPI - 优启梦免费API数据接口调用服务平台

 Multiple Bio Links for Instagram - 短网址

 韩小韩API接口站 - 免费API数据接口调用服务平台JSON API免费接口-BeJSON.com

接口大全-免费API,收集所有免费的API

一些需要注册的API网站:

API接口-免费API接口-API分类大全-聚合数据 (juhe.cn)

万维易源-互联网API入口 (showapi.com)

全部API - API数据大全 - 极速数据 (jisuapi.com)

百度AI开放平台-全球领先的人工智能服务平台 (baidu.com)

阿里云-为了无法计算的价值 (aliyun.com)

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

基于TCP协议实现HTTP_GET请求 的相关文章

  • 静默地将 api 资源移动到另一个 url

    我已经用 WepApi 2 编写的 api 与主网站紧密结合 我决定将其与另一个网络应用程序解耦 以使事情更加隔离 我遵循了这样的步骤 将所有 API 控制器提取到另一个项目 创建属性以将当前使用旧 URL 的所有用户重定向到新 URL 由
  • 从 Django 基于类的视图的 form_valid 方法调用特殊(非 HTTP)URL

    如果你这样做的话 有一个 HTML 技巧 a href New SMS Message a 点击新短信打开手机的本机短信应用程序并预 先填写To包含所提供号码的字段 在本例中为 1 408 555 1212 以及body与提供的消息 Hel
  • 发送压缩文件 Spring

    我想通过我的 spring 控制器发送一个已经存在的压缩文件 但我不断收到这些错误消息org springframework web HttpMediaTypeNotAcceptableException Could not find ac
  • 如何将 POST 请求内容保存为 .NET 中的文件 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个客户端应用程序POST请求a
  • $http.get 和 method:'GET' 之间的区别

    我正在使用 Spring Data REST 并有一个 MySQL DB 来管理我的数据 我使用 AngularJS 编写了第一页 并希望从数据库中获取数据 为了获取我的数据 我知道有两种不同的方式 http get http myURL
  • Jsoup http 日志记录

    有没有办法记录http请求和响应 我们假设以下请求 Connection Response res Jsoup connect LOGIN URL HERE data user USER pass PASS method Connectio
  • 通过 http 的私有 git 存储库

    你能推荐任何简单的解决方案来设置可通过http s cleutus建议的 访问的git存储库吗 我有自己的 http 服务器 我想用它来托管一些小型私人项目 在家里我可以通过 ssh 连接 但在工作中防火墙阻止我这样做 有没有免费的方法来设
  • org.apache.http 软件包在 API 级别 23 中被删除。替代方案是什么?

    在更新到最新的 android API 级别 23 Marshmallow 后 通过 build gradle 添加以下更改后 所有 org apache http 类都不起作用 android compileSdkVersion 23 b
  • 如何使用独立的 Jetty 进行服务器推送

    我正在尝试使用独立的 Jetty 在静态网站上测试服务器推送功能 我的网站由一个index html 1个CSS 一堆图像组成 目录结构为 Album index html style css images image 1 png a se
  • HTTP 和 HTTPS iframe

    我正在创建一个小部件 我想允许其他人使用它 这iframe通过 HTTP 加载 但我想允许用户通过 HTTPS 登录 即通过 SSL 发送登录请求 同源策略中允许这样做吗 即 场景是用户可以将我的 JavaScript 集成到他们的网站 小
  • Chrome 在传输一定量的数据后挂起 - 等待可用的套接字

    我有一个浏览器游戏 最近我开始向游戏添加音频 Chrome 无法加载整个页面并卡在 91 requests 8 1 MB transferred 并且不再加载任何内容 它甚至破坏了所有其他选项卡中的网站 说Waiting for avail
  • 在golang中获取TTFB(第一个字节的时间)值

    我正在尝试获取 TTFB 值和 Connect 值 c exec Command curl w Connect time connect TTFB time starttransfer Total time time total o dev
  • 是否可以修改 $_SESSION 变量?

    恶意用户是否可以将 SESSION 在 php 中 变量设置为他想要的任何值 很大程度上取决于您的代码 有一点非常明显 SESSION username REQUEST username
  • HTTP代理服务器

    我开始研究一个用 C 编写的非常基本的 HTTP 代理服务器 Edit 只是转发我的请求的东西 此时我很难理解如何继续 任何帮助都会有益的 看一眼micro proxy http acme com software micro proxy
  • 返回重定向作为对 Ajax(fetch、XHR 等)请求的响应

    如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果服务器发送重定向 又名 302 响应加上 Location 标头 浏览器将自动遵循重定向 对此的回应second请求 假
  • 从 HTTP 登录到 HTTPS

    我的网站默认使用 HTTP 我确实有一个启用 HTTPS 的证书 但只有其上的某些区域强制建立安全连接 登录是通过 Ajax 处理的 我想开始使用 SSL 即使请求来自 HTTP 我尝试强制请求的地址具有 HTTPS 并且它完美地回复 然而
  • 为什么 websocket 需要使用 HTTP 进行打开握手?为什么不能成为一个独立的协议呢?

    Websocket 的设计方式是 通过使其握手成为有效的 HTTP 升级请求 其服务器可以与 HTTP 服务器共享端口 我对这个设计理念存有疑问 无论如何 WebSocket 协议都是一个独立的基于 TCP 的协议 为什么我们需要这个 HT
  • 谁添加“_”单下划线查询参数?

    我有一个在 Apache 上运行的 PHP 服务器 我收到很多类似这样的请求 10 1 1 211 02 Sep 2010 16 14 31 0400 GET request 1283458471913 action get list HT
  • 如何在android中创建nanohttpd服务器?

    其实我也查过一些问题 然后去github上找了一下 但我是新来的 我无法理解这个例子 我想在android中创建http服务器 这样我就可以在PC浏览器中访问它 我有一个类扩展 nanohttpd 的实例 但服务器无法工作 不知道为什么 我
  • GET 和 POST 方法有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 什么时候用POST 什么时候用GET https stackoverflow com questions 46585 when do you use post and when do you use

随机推荐

  • Git 补丁— diff 和 patch 使用详解

    Git 补丁 diff 和 patch 使用详解 1 diff 和 patch 的区别 2 生成patch 2 1 git diff 3 git format patch 3 应用patch 4 冲突解决 题外话 1 diff 和 patc
  • flutter 图片加载和预览实现

    注 本文只提供了思路 并无完整性demo 使用的是cached network image 因为版本变革经常头大 而且需要自己对源码做些修改 建议github fork一下 然后导入自己的地址 类似 dependencies cached
  • Spider(网络蜘蛛)之ajax爬取douban电影排行和kfc门店数据

    爬前注意 首先douban的接口请求方式是get简单一点 寻找规律可以爬取数据 kfc的接口方式是post data所需要parse urlencode data encode utf 8 需要编码 编码和解码是两个相反的过程 字节 lt
  • 分布式事务框架Seata

    分布式事务框架Seata sei达 一 分布式事务前言 1 数据库管理系统中事务 transaction 的四个特性 简称ACID 这种特性简称刚性事物 原子性 Atomicity 原子性是指事务是一个不可再分割的工作单元 事务中的操作要么
  • 特征选择--scikit-learn

    特征选择 Feature Selection choosing a subset of all the features the ones more informative 最终得到的特征选是原来特征的一个子集 特征选取是机器学习领域非常重
  • synchronized方法和代码块

    1 同步 由于多线程并发存在数据不安全问题 为了保证数据的安全性需要一些特殊的手段来维持 数据不安全主要是针对修改来说的 如果一个数据只能读不能修改几乎不会产生什么安全问题 只有修改数据的时候容易产生一些差错导致多线程并发造成数据不安全 从
  • 清理 Ubuntu 系统的 4 个简单步骤

    清理 Ubuntu 系统的 4 个简单步骤 现在 试试看这 4 个简单的步骤 来清理你的 Ubuntu 系统吧 这份精简指南将告诉你如何清理 Ubuntu 系统以及如何释放一些磁盘空间 如果你的 Ubuntu 系统已经运行了至少一年 尽管系
  • js类型检测

    1 检测是否是字符串 function isString obj return Object prototype toString call obj object String 2 检测是否是对象 function isObject obj
  • 《视觉SLAM十四讲》第一版源码slambook编译调试

    slambook master ch2 编译正常 log如下 slambook master ch2 mkdir build cd build cmake make j8 The C compiler identification is G
  • python中去除字符串中 表示的空格

    去掉 nbsp 硬空格 必须在unicode下替换才行 如下所示 text replace u xa0 其中text就是包含 nbsp 的一个变量
  • Unity3D中API常用方法和类详细讲解 (Transform类)

    目录 Transform类 点击这里进入官网 该类表示的是对象的位置 旋转和缩放 Properties Transform parent public Transform parent 让一个游戏物体成为另一游戏物体的子对象 那么该物体的
  • 计算机考研复试上机算法学习

    计算机考研复试上机算法学习 这篇博客是博主在准备可能到来的线下上机复试基于王道机试指南的学习 将各道习题链接和代码记录下来 这篇博客权且当个记录 文章目录 计算机考研复试上机算法学习 1 STL容器学习 1 1 vector动态数组 1 1
  • mongoDB 一些操作命令

    如果你想创建一个 myTest 的数据库 先运行use myTest命令 之后就做一些操作 如 db createCollection user 这样就可以创 建一个名叫 myTest 的数据库 一 数据库常用命令 1 Help查看命令提示
  • 微信小程序调用微信支付

    1 首先肯定是要去微信公众平台申请接入微信支付 2 申请成功之后就可以调用商户号的接口进行微信支付交易了 3 携带的参数肯定是从后端接口拿取的 我们回调的时候直接拉起支付就可以了 wx showLoading title 处理中 调用后端接
  • 将docker容器设置为宿主机同一网段

    本文主要讲述 将docker的容器ip设置为宿主机同一网段 并且允许宿主机以及局域网其它机器访问它 创建docker的虚拟网络 本人局域网的网段为192 168 1 0 24 网关为路由器的192 168 1 1 docker networ
  • STM32F103ZET6【标准库函数开发】------09 高级定时器TIM1输出7个PWM,三对为互补PWM

    只有高级定时器可以输出互补的PWM 所以只有TIM1和TIM8可以实现这个功能 而TIM1又分为三种情况没有重映射 部分重映射 完全重映射 一 没有重映射 下面展示主要的time c main c函数的代码 void TIM1 PWM In
  • 机器人路径规划的算法有很多种,其中RRT算法是其中一种比较流行的算法之一

    机器人路径规划的算法有很多种 其中RRT算法是其中一种比较流行的算法之一 在这篇文章中 我们将为大家介绍如何使用Matlab实现基于RRT算法的机器人最短路径规划 并附上相应的源代码 我们首先需要明确RRT算法的基本思路 RRT全称为Rap
  • Android——Binder机制

    1 简介 Binder是什么 机制 Binder是一种进程间通信的机制 驱动 Binder是一个虚拟物理设备驱动 应用层 Binder是一个能发起进程间通信的JAVA类 Binder就是Android中的血管 在Android中我们使用Ac
  • Java设计模式之七大设计原则

    Java设计模式之七大设计原则 本文对Java设计模式中的七大设计原则进行汇总介绍 提炼最核心的概念 设计模式总结笔记 一 设计模式七大原则 设计模式的目的 代码可重用性 相同功能的代码 不用多次编写 可读性 编程规范性 便于其他程序员的阅
  • 基于TCP协议实现HTTP_GET请求

    前言 之前一直使用MQTT的物联网协议 偶然间发现互联网中HTTP的通信协议也应用广泛 想要更好的理解这个协议 可以基于tcp来实现这个协议 这样可以更理解底层组包结构 http与mqtt类似都是基于tcp udp 的基础上规范了传输的报文