python的requests.post请求来发送application/json和application/x-www-form-urlencoded数据

今天快坑死我了,网上讲这个的特别少,难道大家都不用这个吗?废话不多说,上干货。

发送application/json数据

这个比较简单,我这里不需要什么headers 和cookie,需要的朋友去这里看:python requests 设置headers 和 post请求体x-www-form-urlencoded - 弃身锋刃 - 博客园

    url_weather = "www.baidu.com/****"  # 这就是你的请求路由
    params = {
        "a": {
             "b":1   
        }
    }  # 这里就是你的json数据
    data = requests.post(url_weather, json=params).text  # 这样就可以发送给请求了,.text用来读取返回的数据的

发送application/x-www-form-urlencoded数据

    url_weather = "http://"  # 请求路由


    requestdata = {"jsonString":'{"name":"%s","date":"%s","limit":%d}'%(city_name_dict[projectId],start_time,num)}  # 关键都在这里了,一定要仔细看
                                           

    data = requests.post(url_weather,data=requestdata).text

一定要仔细看这一段数据 

{"jsonString":'{"name":"%s","date":"%s","limit":%d}'%(city_name_dict[projectId],start_time,num)}

 1,这种类型的数据是form表单键和值都要变成字符串,值是字典的时候不能直接用str转字符串,虽然看上去是一样的

{"jsonString":str({"name":"%s","date":"%s","limit":%d})%(city_name_dict[projectId],start_time,num)}

2,这种可变参数的输入不能用format,因为这里的值是字典类型,本身就有一个{},会引起冲突。(这里懒得给format里的参数加key了,加了也不行)

{"jsonString":'{"name":"{}","date":"{}","limit":{}}'.format(city_name_dict[projectId],start_time,num)}

3,用requests.post请求的时候需要将数据传给data(上面的是传给json)

requests.post(url_weather,data=requestdata).text

2022-03-30补充说明

发现了一种发送application/x-www-form-urlencoded数据的另一种简介方便的方式

data_body_dict = {"a" :1, "b": 2}
requests.post(url, data=[("jsonString", json.dumps(data_body_dict))]) # data_body_dict就是请求所需字典数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值