python带cookies发送post请求_Python: 模拟post请求时的相关问题:cookie,json

需求:模拟客户端进行post请求,除业务参数外,还需带有sign参数

在实现该需求时,使用了 requests.request()方法: requests.request('POST',url,data=rdata,cookies=rcookie),随后执行时遇到了以下问题:

1.

原因:缺失了header相关信息

解决方法:在header中添加 User-Agent 和 refer等相关信息

headers = {

'User-Agent': '...',

'referer': '....'

}

2. 提示 参数不合法

原因:请求的body中,需以 json 形式传参,而初始调用时使用的为data

解决方法:解决方法有俩,

① 因为request() 参数中本来即存在 json,可直接使用json来传参,即:

requests.request('POST',url,json=json.dumps(rdata),cookies=rcookie)

② 也可继续使用 data 参数,此时需指定 content-type:

headers = {'Content-Type': 'application/json'}

req = requests.request('POST',url,headers=headers,data=json.dumps(rdata),cookies=rcookie)

P.S. 若不指定content-type,data为dict时,默认为application/x-www-form-urlencoded;

data为str时,则默认为application/json。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用 Requests 模块发送 POST 请求,你需要在调用 `requests.post()` 函数传入几个参数: 1. `url`: 这是你要发送 POST 请求的 URL。 2. `data`: 这是你要发送的数据。它可以是一个字典,列表,元组或字符串。如果你要发送表单数据,你应该使用字典并使用 `requests.post()` 函数的 `data` 参数传递它。 3. `json`: 这是你要发送JSON 数据。你可以使用这个参数来发送 JSON 格式的数据。 4. `headers`: 这是你要发送的 HTTP 头。你可以使用字典来指定 HTTP 头。 5. `cookies`: 这是你要发送cookie。你可以使用字典来指定 cookie。 6. `auth`: 这是你的身份验证信息。你可以使用元组来指定用户名和密码。 7. `timeout`: 这是等待服务器响应的最长间(以秒为单位)。 例如,下面是使用 Requests 模块发送 POST 请求的示例代码: ``` import requests url = 'http://httpbin.org/post' data = {'key': 'value'} headers = {'Content-Type': 'application/json'} response = requests.post(url, data=data, headers=headers) print(response.text) ``` 这个示例代码向 `http://httpbin.org/post` 发送了一个 POST 请求,并使用 `data` 参数传递了一个字典作为表单数据,使用 `headers` 参数指定了 HTTP 头。 ### 回答2: Requests 模块发送 Post 请求的参数可以通过不同的方式传递。 第一种方式是通过 data 参数传递,可以将参数以字典形式传递给 data 参数,例如: ``` import requests data = {'key1': 'value1', 'key2': 'value2'} response = requests.post(url, data=data) ``` 第二种方式是通过 json 参数传递,可以将参数以字典形式传递给 json 参数,例如: ``` import requests data = {'key1': 'value1', 'key2': 'value2'} response = requests.post(url, json=data) ``` 第三种方式是通过 headers 参数传递,可以将参数以字典形式传递给 headers 参数,例如: ``` import requests headers = {'Content-Type': 'application/json'} response = requests.post(url, headers=headers) ``` 第四种方式是通过 cookies 参数传递,可以将参数以字典形式传递给 cookies 参数,例如: ``` import requests cookies = {'key1': 'value1', 'key2': 'value2'} response = requests.post(url, cookies=cookies) ``` 以上是 Requests 模块发送 Post 请求的一些常见参数传递方式,根据实际情况选择合适的方式进行参数传递。 ### 回答3: Requests 模块发送 post 请求的参数可以通过 data 或者 json 参数来设置。 使用 data 参数,可以传递一个字典类型的对象作为参数,其中包含了需要发送的数据。这个字典对象会被自动编码为表单形式的请求数据,然后发送给服务器。可以使用如下方式设置 data 参数: ```python import requests payload = {'key1': 'value1', 'key2': 'value2'} response = requests.post(url, data=payload) ``` 使用 json 参数,可以传递一个字典类型的对象作为参数,其中包含了需要发送的数据。这个字典对象会被自动编码为 JSON 格式的请求数据,然后发送给服务器。可以使用如下方式设置 json 参数: ```python import requests payload = {'key1': 'value1', 'key2': 'value2'} response = requests.post(url, json=payload) ``` data 参数适用于普通的表单数据提交,而 json 参数适用于发送 JSON 数据的情况。根据实际需要选择合适的方式来设置参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值