解析从请求发布接收的多部分/表单数据

问题描述

如果收到multipart/form-data响应,则可以使用requests-toolbelt库来解析它,如下所示:

$ pip install requests-toolbelt

安装后

from requests_toolbelt.multipart import decoder

testEnrollResponse = requests.post(...)
multipart_data = decoder.MultipartDecoder.from_response(testEnrollResponse)

for part in multipart_data.parts:
    print(part.content)  # Alternatively, part.text if you want unicode
    print(part.headers)

解决方法

我正在使用请求库编写Web Service客户端。我正在包含文件和text-json的multipart / form-
data中获取数据。我不知道如何解析它。是否有合适的库可以解析python中的multipart / form-data格式,还是我应该自己编写解析器?

我的代码:

data = {
  "prototypeModel" :('prototypeModel',open(prototypeModel,'rb'),'application/octet-stream',{'Expires': '0'}),"mfcc_1" : ('mfcc',open(mfcc_1,"mfcc_2" : ('mfcc',open(mfcc_2,"mfcc_3" : ('mfcc',open(mfcc_3,}

print( '---------------------- start enroll ----------------------')
testEnrollResponse = requests.post(server+sessionID,files = data,json = declaredParameters)

b’\ r \ n–c00750d1-8ce4-4d29-8390-b50bf02a92cc \ r \ nContent-
Disposition:表单数据;name =“ playbackHash” \ r \ n内容类型:application / octet-
stream \ r \ n \ r \ n \ x16 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \
x00serialization :: archive \ n \ x00 \ x04 \ x08 \ x04 .... x00 \ x00R \
x94 \ x9bp \ x8c \ x00 \ r \ n–c00750d1-8ce4-4d29-8390-b50bf02a92cc \ r \
nContent-Disposition:表单数据;name =“ usersMFCC” \ r \ n内容类型:application /
octet-stream \ r \ n \ r \ n \ x16 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \
x00serialization :: archive \ n \ x00 \ x04 \ x08 \ x04 \ x08 \ x01 \ x00 \
x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ xf8 \ x16 \ x00 \ x00 \ x00 \ x00
\ x00 \ x00 \ x00u \ xbd \ xb4 / \ xda1 \ xea \ xbf \ x0f \ xed \ xa2 <\ xc9
\ xf8 \ xe7 \ xbf?\ xd5 \ xf06u \ xe7 \ xf0 \ xbf \ xd4 \ x8d \ xd4 \ xa1F \
xbe \ x03 \ x85 @! \ x8co \ xf7 \ r .....
x80 \ xd9 \ x95Yxn \ xd0?\ r \ n–c00750d1-8ce4-4d29-8390-b50bf02a92cc \ r
\ nContent-Disposition:表单数据;name =“ scoreAndStatus” \ r \ n内容类型:application
/ json; charset = utf-8 \ r \ n \ r \ n {“
lexLikelihood”:1.544479046897232,“ overallScore”:-nan,“
playbackLikelihood”:-inf,“ status”:{“ errorCode”:0,“ errorMessage”:“ “}} \ r
\ n–c00750d1-8ce4-4d29-8390-b50bf02a92cc-\ r \ n’

我用“ .....”替换了更多的二进制数据。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...