Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环问题:尝试发送表单url编码数据导致类型错误:can';t concat字节到str,后者的修复会破坏前者_Python_Python 3.x_Urllib - Fatal编程技术网

Python 循环问题:尝试发送表单url编码数据导致类型错误:can';t concat字节到str,后者的修复会破坏前者

Python 循环问题:尝试发送表单url编码数据导致类型错误:can';t concat字节到str,后者的修复会破坏前者,python,python-3.x,urllib,Python,Python 3.x,Urllib,当我尝试按照这个问题的答案并将dict传递给urlopen时,我得到了这个问题中描述的错误: 代码基于第一个问题答案中的建议: req = Request(url, method='POST', data={"ID": theId}) r = urlopen(req) 当我尝试应用第二个问题的公认答案并使用此答案时(类似于我的原始代码) 。。。我回到了从第一个问题开始的地方,因为在数据参数中传递json字符串会强制发送应用程序/json,而不是我正在寻找的x-www-form-urlencod

当我尝试按照这个问题的答案并将dict传递给urlopen时,我得到了这个问题中描述的错误:

代码基于第一个问题答案中的建议:

req = Request(url, method='POST', data={"ID": theId})
r = urlopen(req)
当我尝试应用第二个问题的公认答案并使用此答案时(类似于我的原始代码)

。。。我回到了从第一个问题开始的地方,因为在
数据
参数中传递json字符串会强制发送
应用程序/json
,而不是我正在寻找的
x-www-form-urlencoded


有办法摆脱这个循环陷阱吗?

通过调用
urllib.parse.urlencode
将dict转换为字符串,然后显式设置内容类型,修复了此问题:

    postparam = urllib.parse.urlencode({"ID": theId}).encode('utf-8')
    req = Request(url, method='POST', data=postparam)
    req.add_header("content-type", "application/x-www-form-urlencoded")
    r = urlopen(req)

您是否可以显示您的
urlopen
调用的另一个版本,该版本给出了
字节
相关错误?编辑的问题,也找到了链接问题中未提及的解决方案。
    postparam = urllib.parse.urlencode({"ID": theId}).encode('utf-8')
    req = Request(url, method='POST', data=postparam)
    req.add_header("content-type", "application/x-www-form-urlencoded")
    r = urlopen(req)