IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> (一)python发送HTTP 请求的两种方式(get和post ) -> 正文阅读

[网络协议](一)python发送HTTP 请求的两种方式(get和post )

引入 requests 包

import requests

注:发送请求(包括请求行、方法类型、头、体) & 常见的请求方式有get、post、put、delete


一、发送get请求

? ? ? ? ? ?格式:requests.get() (内容: url必填; params选填:url参数字典)

# ~ 不带参数的get请求

res = requests.get(url='http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince')
print(res.text)
#打印响应主体内容,字符串格式

?# ~ 带参数的get请求

res = requests.get(url='http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getSupportCityString?theRegionCode=3113')
print(res.text)

# ~ 使用params的get请求

res = requests.get(url='http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getSupportCityString',
                  params={"theRegionCode":3113})
print(res.text)

二、发送post请求

? ? ? ?知识扩展#??requests.post() post请求分为5种,常用的有三种,如下
? ? ? ①application/x-www-form-urlencod (form表单);
? ? ? ②raw (纯文本格式):有5种格式,分别为json/xml/Html/Text/JavaScrip
? ? ? ③multipart/form-data (复合式表单)

1.? ?form表单(application/x-www-form-urlencod)? ? ? ? ?-----data? ?后跟字典

? ? ?eg.1: 带参数的查询接口

res = requests.post(url='http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getSupportCityString',
              headers={"Content-Type": "application/x-www-form-urlencoded"},
              data={"theRegionCode": 3113})
print(res.text)

? ? ?eg.2: 带账号名密码的登录接口

res = requests.post(url='http://123.56.99.53:9000/event/api/admin/',
              headers={"Content-Type": "application/x-www-form-urlencoded"},
              data={"username": "admin", "password": "MTIzYWRtaW4="})
print(res.text)

2.? ?纯文本格式(raw)

? ? ? ?# ~ xml格式? ? ----data? ? 后跟字符串

res = requests.post(url='http://ws.webxml.com.cn/WebServices/WeatherWS.asmx',
              headers ={"Content-Type": "text/xml; charset=utf-8",
                       "SOAPAction": "http://WebXml.com.cn/getSupportCityString"},
              data = '''<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getSupportCityString xmlns="http://WebXml.com.cn/">
      <theRegionCode>string</theRegionCode>
    </getSupportCityString>
  </soap:Body>
</soap:Envelope>''')
print(res.text)

? ? ? ?# ~json格式? ? ? ?-----?json? 后跟字典(常用), or ----data? 后跟json字符串

res = requests.post(url='http://123.56.99.53:5000/event/weather/getWeather/',
             headers={"Content-Type": "application/json"},
             json={"theCityCode": "1001"})
print(res.text)

注:# json后面跟的是字典即json={"theCityCode": "1001"}),可改成 data=‘{"theCityCode": "1001"})’;字典能自动转为json字符串,所以一般用字典表示;建议纯json正文的接口使用第一种方式,除非是较长的字符串? ? ?

? ? ? ?# ~复合式表单(multipart/form-data )? ? ? ----?key value (接口名称:文件名)

res = requests.post(url='http://123.56.99.53:9001/api/uploadFile/',
              headers={"Cookie": "uid=1;token=44c972f05d76fdd93c31f9c2b65bb098f308cdfc"
                      #"Content-Type": "multipart/form-data"},
#有的接口不需要写正文体格式,老服务器一般需要写
              files={"myfile1": open('D:\全力以富\1.docx', 'rb')
                     #"myfile2: open(上传多个文件)"})
print(res.text)

? ? ? ? ? ?注:上传接口 files={‘文件路径’,‘rb'}? rb表示 上传二进制文件



高级选项? cookie放置

res = requests.post(url='http://123.56.99.53:9001/api/uploadFile/',
              cookies={"uid": "1", "token": "44c972f05d76fdd93c31f9c2b65bb098f308cdfc"},
              files={"myfile": open('D:\全力以富\文艺清新单页10.docx', 'rb')
                     })
print(res.text)
res = requests.post(url='http://123.56.99.53:9001/api/get_salesMonthly/',
                    headers={"Content-Type": "application/json"},
                    json={"city": "110000", "month": "3"},
                    cookies={"uid": "1", "token": "44c972f05d76fdd93c31f9c2b65bb098f308cdfc"})
print(res.text)

习题:cookies获取:先登录——再获取——给查询接口用

res1 = requests.post(url='http://123.56.99.53:9001/api/login/',
                    headers={"Content-Type": "application/x-www-form-urlencoded"},
                    data={"username": "admin", "password": "liulaoshi123"},
                    allow_redirects=False)
#requests.utils.dict_from_cookiejar(res1.cookies)
# 从 cookie 对象中转字典可用来查看cookies
res2 = requests.post(url='http://123.56.99.53:9001/api/get_salesMonthly/',
                    headers={"Content-Type": "application/json"},
                    json={"city": "110000", "month": "3"},
                    cookies=res1.cookies)
print(res2.text)

注: allow_redirects=False ----不允许自动重定向

?

?

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:35:21  更:2022-03-17 22:36:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:28:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码