python+requests库使用post方法采坑

本文介绍了如何使用Python的requests库分别通过data和json方式发送POST请求,以及在处理JSON body时遇到的常见问题和解决方案,包括header设置和不同数据类型转换的注意事项。
摘要由CSDN通过智能技术生成

目录

1、post方法传body参数方法一,使用data的方式传入接口的body体:

1.1、此处的坑是,如果使用data的方式需要传入header,如果不传入header会报415,也就是通过post请求未加header接口返回415的情况,都可以先排查是否少了header;

1.2、如果传入data,如果body体是json的话需要用,json方法进行转换,target_json = json.dumps(target_json, ensure_ascii=False);根据情况看是否取消ensure_ascii转换。

2、post方法传body参数方法二,使用json的方式传入接口的body体:

2.1 此处的坑是,如果使用json则再传入json的时候,目标dict不需要进行json的转换,当然和你传的值有关,如果你传的是字典则不需要进行json.dumps(target_json, ensure_ascii=False)的转换,如果传的是str或者其他非dict类型的就需要做转换,在测试过程中,可以反复尝试如果request.post报400,则考虑是参数问题,如果加了json转换报异常则可以把json转换去掉,相反可以加上,根据实际情况尝试。


1、post方法传body参数方法一,使用data的方式传入接口的body体:

import requests
import json


def post_request(self, request_url=None, area=None, header=None, target_json=None):
    url = "http://" + area + request_url
    header = {'Accept': 'application/json',
                  'Content-Type': 'application/json',
                  }
    # 转换json的时候用false,不转换文字
    target_json = json.dumps(target_json, ensure_ascii=False)
    if header is None:
       header = header
    print(target_json)
    result = requests.post(url, headers=header, data=target_json.encode('utf-8')).json()
    return result

1.1、此处的坑是,如果使用data的方式需要传入header,如果不传入header会报415,也就是通过post请求未加header接口返回415的情况,都可以先排查是否少了header;

1.2、如果传入data,如果body体是json的话需要用,json方法进行转换,target_json = json.dumps(target_json, ensure_ascii=False);根据情况看是否取消ensure_ascii转换。

2、post方法传body参数方法二,使用json的方式传入接口的body体:

import requests
import json

def post_request(self, request_url=None, area=None, target_json=None, header=None):
    url = "http://" + area + request_url
    result = requests.post(url, json=target_json).json()
    return result

2.1 此处的坑是,如果使用json则再传入json的时候,目标dict不需要进行json的转换,当然和你传的值有关,如果你传的是字典则不需要进行json.dumps(target_json, ensure_ascii=False)的转换,如果传的是str或者其他非dict类型的就需要做转换,在测试过程中,可以反复尝试如果request.post报400,则考虑是参数问题,如果加了json转换报异常则可以把json转换去掉,相反可以加上,根据实际情况尝试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷隐凡二

相识便是缘,开启技术大门

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值