API 接口自动化

HTTP协议 - 白月黑羽

HTTP协议简介

如果客户端是浏览器,如何在chrome浏览器中查看 请求和响应的HTTP消息?按f12-》network

 

 清除当前信息

响应的消息体在Response里看

点preview,可以看响应的消息体展开的格式

HTTP请求消息 

请求头 request headers

提供信息给服务端

User-Agent:

客户端的类型。客户端不一定是浏览器。客户端和服务端(HTTP协议)不仅是浏览器和服务器之间,任何两个软件之间都可以使用HTTP协议。

Accept-Language

客户端希望服务端使用中文

请求体 /消息体

状态行 status line

以前的url 可能是a/b/c,后面可能变成了a/b/d,当再用以前的url访问时,就会返回3XX,代表重定向,相应的响应消息头里会告诉新的url是哪一个

抓包工具 fiddler

只有url中包含customer才显示

requests库 和 session

 构建请求消息体

http://httpbin.org/post

将要发送的网址加到fiddler

json 格式消息体

dumps把python中的对象序列化为json格式的字符串

 中文会变成对应的unicode

import requests,jsonpayload = {"Overall":"良好","Progress":"30%","Problems":[{"No" : 1,"desc": "问题1...."},{"No" : 2,"desc": "问题2...."},]
}r = requests.post("http://httpbin.org/post", data=json.dumps(payload))

中文会变成对应的unicode 

如果不想中文变成unicode编码,可以 写成 

data=json.dumps(payload, ensure_ascii=False)

但是这样的话,字符串带有中文,编码方式就得是utff8了,不然ascill码不够用,不能用缺省的latin-1 编码

data=json.dumps(payload, ensure_ascii=False).encode("utf-8")。

dumps把python中的对象序列化为json格式的字符串

loads把json格式的字符串反序列化为python中的对象

这样写有点麻烦

也可以将 数据对象 直接 传递给post方法的 json参数,如下

r = requests.post("http://httpbin.org/post", json=payload)

虽然中文对应的也是unicode但是接收端会处理 

 检查响应消息体

发出去的是字节串,接收的原始消息也是字节串

text获取文本内容,也就是字符串。从字节串到字符串意味着其中有一个解码的过程。

那么,requests是 以什么编码格式 把HTTP响应消息体中的 字节串 解码 为 字符串的呢?

requests 会根据响应消息头(比如 Content-Type)对编码格式做推测。

但是有时候,服务端并不一定会在消息头中指定编码格式,这时, requests的推测可能有误(打印 response.encoding 可以看到推测的解码方式),需要我们指定编码格式。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19524.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(四)Axure学习图文教程

Axure中文学习网: Axure中文网 – 交互原型设计软件Axure RP中文正版支持 – 北京口耳相传科技有限公司 一、界面介绍 工具栏:主要操作功能。 站点地图:类似大纲界面,方便理清原型框架及逻辑关系。 元件库:调用所需…

2025年 Java 面试八股文

第一章-Java基础篇 1. Java中的基本数据类型有哪些?⭐ Java中有8种基本数据类型(Primitive Types),分别是: byte:8位,-128 ~ 127short:16位,-32,768 ~ 32,767int&…

基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南

基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南 禅道镜像版本:easysoft/zentao:21.4 Redis版本:redis:6.2.0 Mysql版本:mysql:8.0.35 文章目录 **基于Docker-compose的禅道部署实践:自建MySQL与…

【Java八股文】01-Java基础面试篇

【Java八股文】01-Java基础面试篇 概念Java特点Java为什么跨平台JVM、JDK、JRE关系 面向对象什么是面向对象,什么是封装继承多态?多态体现的方面面向对象设计原则重载重写的区别抽象类和实体类区别Java抽象类和接口的区别抽象类可以被实例化吗 深拷贝浅拷…

基于Qt 和微信小程序的用户管理系统:WebSocket + SQLite 实现注册与登录

目录 一. 概要 二. 技术栈 三. 系统功能设计 3.1 功能模块 3.2 数据表设计 四. 具体实现 4.1 Qt 服务端 4.1.1 初始化 WebSocket 服务器 4.1.2 用户管理界面 4.2 微信小程序端 4.2.1 注册功能 4.2.2 登录功能 五. 运行效果 六. 源码下载 一. 概要 在物联网和智能设备…

【STM32】舵机SG90

1.舵机原理 舵机内部有一个电位器,当转轴随电机旋转,电位器的电压会发生改变,电压会带动转一定的角度,舵机中的控制板就会电位器输出的电压所代表的角度,与输入的PWM所代表的角度进行比较,从而得出一个旋转…

PostgreSQL:备库的延迟问题处理步骤

目录标题 1. 查看主备状态计算方式:实际情况:举个例子: 2. 查看历史状态3. 分析日志文件4. 查看数据库层面的复制状态5. 检查活动事务6. 检查系统资源7. 检查网络状况8. 检查复制槽状态9. 检查未提交的两阶段事务 要排查 PostgreSQL 备库的延…

【重构谷粒商城】06:Maven快速入门教程

重构谷粒商城06——Maven快速入门教程 前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到…

【Python】错误异常

个人主页:Guiat 归属专栏:Python 文章目录 1. 错误和异常的概念1.1 错误1.2 异常 2. 常见的内置异常类型2.1 ZeroDivisionError2.2 IndexError2.3 KeyError2.4 TypeError 3. 异常处理机制3.1 try-except 语句3.2 try-except-else 语句3.3 try-except-fin…

Win11 远程 连接 Ubuntu20.04(局域网)

Win11 远程 连接 Ubuntu20.04(局域网) 0. Ubuntu 开启共享1. Ubuntu系统中安装RDP服务器2.windows中连接使用方式1:远程桌面连接(winr: mstsc)方式2:mobaXterm 3 问题远程连接后出现黑屏 参考文献: 0. Ubuntu 开启共享 在ubunt设置中&#x…

visutal studio 2022使用qcustomplot基础教程

编译 下载,2.1.1版支持到Qt6.4 。 拷贝qcustomplot.h和qcustomplot.cpp到项目源目录(Qt project)。 在msvc中将它俩加入项目中。 使用Qt6.8,需要修改两处代码: L6779 # if QT_VERSION > QT_VERSION_CHECK(5, 2, …

ElasticSearch详解

声明 内容来源尚硅谷知识星球谷粒随享项目,部分概念性的内容,就使用对应文档填写了,若有侵权联系作者删除。 检索模块 技术栈:ElasticSearch ElasticSearch介绍 1.1 elasticsearch 简介 官网: https://www.elastic.co/ Ela…

250214-java类集框架

引言 类集框架本质上相当于是容器,容器装什么东西由程序员指定 1.单列集合 单列集合是list和set,list的实现类有ArrayList和LinkedList,前者是数组实现,后者是链表实现。list和set,前者有序、可重复,后者…

Vue3(3)

一.具体业务功能实现 (1)登录注册页面 [element-plus 表单 & 表单校验] 功能需求说明: 1.注册登录 静态结构 & 基本切换 2.注册功能 (校验 注册) 3.登录功能 (校验 登录 存token) import request from /utils/request// 注册接…

数据结构 day05

数据结构 day05 5. 队列5.3. 链式队列5.3.1. 特征5.3.2. 代码实现 6. 双向链表6.1. 特性6.2. 代码实现 5. 队列 5.3. 链式队列 5.3.1. 特征 逻辑结构:线性结构 存储结构:链式存储 操作:创建、入列、出列、判空、清空 5.3.2. 代码实现 头文…

Uniapp 短视频去水印解析工具开发实现

最近搞了一个有意思的小工具——短视频去水印解析器!这玩意儿可以把短视频中的水印给抹掉,还能提取视频、封面等资源。整个项目用了 Uniapp 开发,做完后体验了一下,发现还挺顺手。今天就来跟大家聊聊实现思路和代码细节~ 需求分析…

HTML【详解】input 标签

input 标签主要用于接收用户的输入,随 type 属性值的不同,变换其具体功能。 通用属性 属性属性值功能name字符串定义输入字段的名称,在表单提交时,服务器通过该名称来获取对应的值disabled布尔值禁用输入框,使其无法被…

什么是MVC?什么是SpringMVC?什么是三层架构?

文章目录 应用分层什么是MVC?什么是 SpringMVC?三层架构三层架构和MVC的关系 应用分层 在讲解什么是MVC之前,先来理解一下什么是应用分层。 应用分层是一种软件开发设计思想,将应用程序划分成N个层次,每个层次都分别负责自己…

【深度学习】深度学习和强化学习算法——深度 Q 网络DQN

深度 Q 网络(Deep Q-Network, DQN) 详解 什么是DQNDQN 的背景DQN 训练流程 2 DQN 的核心思想2.1 经验回放(Experience Replay)2.2 目标网络(Target Network)2.3 ε-贪心策略(ε-Greedy Policy&a…

CSS flex布局 列表单个元素点击 本行下插入详情独占一行

技术栈:Vue2 javaScript 简介 在实际开发过程中有遇到一个场景:一个list,每行个数固定,点击单个元素后,在当前行与下一行之间插入一行元素详情,便于更直观的查看到对应的数据详情。 这种情形&#xff0c…