python使用 requests 模块发送http请求

 request 模块可以帮助我们发起http请求

步骤:

  1.首先import 下 request 模块

  2.然后看请求的方式,选择对应的请求方法

  3.接受返回的报文信息

get 方法

(1)get请求的部分参数

  import requests  

  url ="https://www.baidu.com"

  res = requests.get(url)

  res.encoding = "utf-8"

  res.text

注解:访问百度,响应的报文格式是html格式的,所以要用 .text来解析,因为获取的报文乱码,所以编码格式要设置成utf-8

(2)headers参数(请求头,可选)

import requests

url=r"https://www.baidu.com/s"

Headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

}

post 方法

  url = "https://www.ketangpai.com/UserApi/login"

  datas = {"email":"对应的账号","password":"密码","remember":1}

  res =  requests.post(url,datas)

    res.json()

注解:post 方法传递参数的时候,参数的格式必须是字典类型的,因为返回的报文类型是 json 格式的类型,所以我们可以用 .json 来接收

除此之外我们还可以获取请求的响应头、编码格式、状态码等等

  res.headers 获取响应头

  res.encoding 获取编码格式

  res.status_code 状态码

 1.1 发送post请求的接口(dict参数)

   将payload 参数是字典类型(dict),传到如下图的 form 里

1.2 发送post请求的接口(json参数)

1、post 的 body 是 json 类型,也可以用 json 参数传入。

2、先导入 json 模块,用 dumps 方法转化成 json 格式。

3、返回结果,传到 data 里

2、常见的四种编码方式如下:  

2.1、application/x-www-form-urlencoded 

 (1)请求正文是application/x-www-form-urlencoded  

  这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。

POST http://www.example.com HTTP/1.1    
Content-Type:application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

  首先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。

Reqeusts支持以form表单形式发送post请求,只需要将请求的参数构造成一个字典,然后传给requests.post()的data参数即可。

2.2、multipart/form-data 

(2)请求正文是multipart/form-data  

  除了传统的application/x-www-form-urlencoded表单,我们另一个经常用到的是上传文件用的表单,这种表单的类型为multipart/form-data。

  这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值,下面是示例

form表单:

1 <form action="/upload" enctype="multipart/form-data" method="post">
2     Username: <input type="text" name="username">
3     Password: <input type="password" name="password">
4     File: <input type="file" name="file">
5     <input type="submit">
6 </form>

Http协议请求:

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

形式:

1 requests.post(url='',data={'key1':'value1','key2':'value2'},headers={'Content-Type':'multipart/form-data'})

2.3、application/json 

(3)请求正文是raw

  我就是把数据 JSON 序列化之后来提交的。不过当时我是把 JSON 字符串作为 val,仍然放在键值对里,以 x-www-form-urlencoded 方式提交。

  Google 的 AngularJS 中的 Ajax 功能,默认就是提交 JSON 字符串。例如下面这段代码:

1 var data = {'title':'test', 'sub' : [1,2,3]};
2 $http.post(url, data).success(function(result) {
3     ...
4 });

最终发送的请求是:

1 POST http://www.example.com HTTP/1.1
2 Content-Type: application/json;charset=utf-8
3  
4 {"title":"test","sub":[1,2,3]}

 

4、text/xml 

(4)请求正文是binary

  它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。

 1 POST http://www.example.com HTTP/1.1
 2 Content-Type: text/xml
 3  
 4 <?xml version="1.0"?>
 5 <methodCall>
 6     <methodName>examples.getStateName</methodName>
 7     <params>
 8         <param>
 9             <value><i4>41</i4></value>
10         </param>
11     </params>
12 </methodCall>

  不过,我个人觉得 XML 结构还是过于臃肿,一般场景用 JSON 会更灵活方便。

形式:

1 requests.post(url='',files={'file':open('test.xls','rb')},headers={'Content-Type':'binary'})

  相比之下,get方式的数据提交方式(编码方式)只有一种,就是application/x-www-form-urlencoding

### 回答1: 我可以提供一些指导,使用Pythonrequests模块发送JSON数据的方法如下:首先,安装requests模块,然后使用requests.post()方法将JSON数据发送到你指定的URL。示例代码如下:import requestsurl = 'http://www.example.com/'data = {'key1': 'value1', 'key2': 'value2'}headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}response = requests.post(url, data=json.dumps(data), headers=headers) ### 回答2: 使用Pythonrequests模块发送JSON数据非常简单。下面是一个示例: 首先,我们需要导入requests模块: import requests 然后,我们可以使用requestspost方法来发送JSON数据: url = "http://example.com/api" # 需要发送JSON数据的API地址 data = {"name": "John", "age": 30} # 要发送的JSON数据 headers = {"Content-Type": "application/json"} # 设置请求头,指定数据格式为JSON response = requests.post(url, json=data, headers=headers) 在上面的代码中,我们将url设置为要发送JSON数据的API地址,将data设置为要发送的JSON数据。同时,我们还指定了请求头Content-Type为application/json,以告知服务器我们发送的是JSON格式的数据。 最后,我们使用requestspost方法发送请求,并将json参数设置为dataheaders参数设置为headers。服务器将返回一个response对象,我们可以通过它来获取服务器的响应。 对于发送JSON数据,我们可以使用requests模块的json参数来将数据转换为JSON格式,并自动设置Content-Type为application/json。 以上就是使用Pythonrequests模块发送JSON数据的简单示例。使用requests模块可以轻松地向服务器发送JSON数据,并处理服务器的响应。 ### 回答3: 使用pythonrequests模块发送JSON数据非常方便。 首先,需要导入requests模块:import requests 然后,准备要发送的JSON数据,可以将字典转换为JSON字符串,例如:data = {"name": "小明", "age": 18} 接下来,使用requests模块post方法发送JSON数据,同时指定请求头的Content-Type为application/json,例如: response = requests.post(url, json=data, headers={"Content-Type": "application/json"}) 其中,url为要发送请求的URL地址,data为要发送的JSON数据,headers为请求头。 最后,可以通过response对象获取服务器的响应结果。例如,可以通过response.text来获取响应的文本结果,response.json()来获取响应的JSON结果。 完整的代码示例: import requests data = {"name": "小明", "age": 18} url = "http://example.com/api" response = requests.post(url, json=data, headers={"Content-Type": "application/json"}) if response.status_code == 200: print("请求成功") print(response.text) print(response.json()) else: print("请求失败") 以上就是使用pythonrequests模块发送JSON数据的简单示例。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值