Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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 &引用;TypeError:必须是str,而不是bytes";尝试访问request.POST字段时_Python_Pyramid_Multipartform Data - Fatal编程技术网

Python &引用;TypeError:必须是str,而不是bytes";尝试访问request.POST字段时

Python &引用;TypeError:必须是str,而不是bytes";尝试访问request.POST字段时,python,pyramid,multipartform-data,Python,Pyramid,Multipartform Data,我有一个基于金字塔框架的Web服务,它接受一个多部分/表单数据请求 当我从cURL发送请求时,一切正常; 但是,从Android应用程序来看,它失败了,出现以下错误 TypeError:必须是str,而不是bytes 当我尝试访问任何字段时:例如,request.POST.get('smartphoneId',None) 不同之处在于Android库在字段中添加了一些标题,特别是内容传输编码。从cURL发送每个值,如下所示: --------------------------5f28b737b

我有一个基于金字塔框架的Web服务,它接受一个多部分/表单数据请求

当我从cURL发送请求时,一切正常; 但是,从Android应用程序来看,它失败了,出现以下错误

TypeError:必须是str,而不是bytes

当我尝试访问任何字段时:例如,
request.POST.get('smartphoneId',None)

不同之处在于Android库在字段中添加了一些标题,特别是内容传输编码。从cURL发送每个值,如下所示:

--------------------------5f28b737bc4e4813

内容配置:表单数据;name=“smartphoneId”

二,

鉴于安卓系统(经过改装):

--0e0a43aa-3156-48ee-a949-931dcc4eb8be

内容配置:表单数据;name=“smartphoneId”

内容类型:文本/纯文本;字符集=UTF-8

内容长度:3

内容传输编码:8比特

999

最初,内容传输编码是二进制的;我手动将其更改为8位,但得到相同的错误。Python似乎无法解析/处理每个字段的内容

有什么想法吗?

我也有同样的问题(关于Python 3.4)。为了解决这个问题,我为以下模块“webob/compat.py”创建了一个补丁:用python cgi 3.5的当前版本替换现有的multi_补丁。现在,它起作用了。我将在github存储库上创建pr


我为webob创建了一个pull请求:

正如错误消息所说,您正在接收一个字节字符串,但函数需要一个本机字符串。如果库尚未与Py3k兼容,可以使用
str()
将其转换为Python 2。这是Python 3吗?使用
decode
()方法将bytes对象转换为str;FramWork应该是兼容的(至少他们说),但可能还剩下一些bug。这不是pyramid的bug,只是python3,pyramid是完全兼容python3的。如果你可以复制这个作为一个小测试,或者让我完全转储失败的HTTP请求,为WebOb填写一份bug报告:我会看一看,看看这是否是WebOb应该解决的问题。