You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用requests.post发请求报data参数重复传值错误如何解决?

requests.post调用报错got multiple values for argument 'data' 原因及修复

报错原因

requests.post 方法的参数顺序为(url, data=None, json=None, headers=None, ...),第二个位置参数默认对应data参数。你的调用代码requests.post("loginUser",url, data = myobj)中:

  • 给第一个位置参数url传了值"loginUser"
  • 给第二个位置参数(对应data)传了值url变量
  • 又通过关键字参数显式给data传了值myobj
    等于data参数被重复赋值,所以触发类型错误。
    同时代码存在逻辑问题:你提前定义了目标接口地址变量url = 'mywebsite/test.php',但调用时第一个参数传了无关的"loginUser",属于参数传递错误。

修复方法

方法1:删除多余的位置参数

如果你要请求的地址就是提前定义的url变量,直接调整调用参数即可:

import requests
import json

url = 'mywebsite/test.php'
myobj = {"username" : "test", "password" : "1234"}

myobj = json.dumps(myobj)
# 去掉多余的"loginUser"参数,第一个位置参数传目标url
x = requests.post(url, data = myobj)

print(x.text)

方法2:使用requests内置json参数(更推荐)

requests.post原生支持json关键字参数,不需要手动调用json.dumps序列化,也不需要手动指定JSON请求头,框架会自动处理:

import requests

url = 'mywebsite/test.php'
myobj = {"username" : "test", "password" : "1234"}

# 直接传json参数,内部自动完成序列化、请求头补充
x = requests.post(url, json = myobj)

print(x.text)

如果"loginUser"是接口路径的一部分,直接修改url变量为实际的接口地址即可,例如url = 'mywebsite/loginUser'。


内容的提问来源于stack exchange,提问作者jeffinter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:57:01