当前位置: 首页 > 面试题库 >

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

谭铭
2023-03-14
问题内容

我正在使用请求库编写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, 'rb'), 'application/octet-stream', {'Expires': '0'}),
  "mfcc_2" : ('mfcc', open(mfcc_2, 'rb'), 'application/octet-stream', {'Expires': '0'}),
  "mfcc_3" : ('mfcc', open(mfcc_3, 'rb'), 'application/octet-stream', {'Expires': '0'}),
}

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’

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


问题答案:

如果收到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服务客户端。我正在获取包含文件和文本json的多部分/表单数据。我不知道如何解析它。是否有合适的库来解析python中的多部分/表单数据格式,或者我应该自己编写解析器? 我的代码: b'\r\n--c00750d1-8ce4-4d29-8390-b50bf02a92cc\r\nContent-Displace: form-data; name="playback Hash

  • 我试图复制下面的POST请求使用Python中的请求模块: 请求文档建议使用files参数。 当我尝试以下呼叫: 我得到以下HTTP请求: 我还尝试使用数据参数: 导致以下HTTP请求: 我遇到的问题是,使用files参数会导致服务器无法识别调用,可能是由于HTTP请求中发送了意外的“filename”信息。使用数据参数发送错误的内容类型标题。 已知第一个请求正在我希望将请求发送到的服务器上工作-

  • 我目前正在尝试解析我通过Chrome中的Postman插件发送的。然而,我得到的输出如下: 当我尝试调试时,会得到这个输出。当我尝试时,我得到一个空数组,所以我假设数据的格式不正确(只是一个字符串)。在我写我自己的算法之前,我想确定我没有用这个算法重新发明轮子。我做错什么了?或者,如果没有,是否存在一些CakePHP3函数来处理这个问题? 更新 我发现了代码中的错误,路由过程似乎以某种方式将pos

  • 问题内容: 我正在编写一个RESTful API。我在使用不同的动词上载图像时遇到麻烦。 考虑: 我有一个对象,可以通过对URL的发布/放置/删除/获取请求来创建/修改/删除/查看。如果有要上载的文件,则请求是多部分形式;如果只有文本要处理,则请求是application / xml。 为了处理与对象相关的图像上传,我正在做类似的事情: 这里的主要问题是在尝试处理放置请求时,显然$ _POST不包

  • 问题内容: 我正在尝试通过带有POST请求的照片上传 根据自述文件,我应该能够做到这一点 问题是,这不起作用。我收到测试服务器的回复,说它转储了0个post变量。 我已经确认该HTML小页面服务器处于工作状态 所以问题是,请求模块在做什么?有没有更好的方法来发送节点? 问题答案: 经过更多研究后,我决定使用。这使得分段上传非常容易。

  • 我正在尝试通过使用多部分数据主体的JMeter构建HTTP请求。 我有一个HTTP头管理器,其内容类型设置为多部分/表单数据;边界=AaB03x。我选择了“将多部分/表单数据用于POST”。 然后我创建了一个数据主体, 当我运行这个程序时,我发现请求没有正确地发送正文,而是发送了一些随机数据, 发布数据: 并给出错误响应, 我的第二个问题是:请求的第3部分发送一个要上载的文件。我可以通过某种方式传