Python requests 调用 content-type 为 application/x-ndjson 和 multipart/form-data 接口

咸吃萝卜淡操心 · April 13, 2021 · 2025 hits

背景:写爬虫时遇到了 content-type 为 application/x-ndjson 和 multipart/form-data 的两个接口,刚开始没有注意直接都按照 json 和登录表单提交的 form-data 传参了

  • content-type’ 为 ‘application/x-ndjson’ 与传统的 json 不一样,查询了一些资料,尝试暂时解决了这个问题,单对 request body 依然受到较大的格式影响,多个 json object 中不能有换行和空格之类

search_body='''{"a":1}{"b":2}{"c":"ss"}'''

search_res = s.post(url=search_url, headers=search_header, data=search_body.encode("utf-8"))
  • content-type’ 为 ‘multipart/form-data’,multipart/form-data 为传统的文件传输格式,可实际场景是一个 json 的 body,在 python requests 库中没有明确解决方案只有使用 files 去解决,但这依然是上次文件,最后通过外部工具类 requests_toolbelt 解决
m = MultipartEncoder(fields={"msgcode": msgcode, "data": data})
resp = requests.post(url=callback_url, data=m, headers={
                  "Content-Type": m.content_type})
No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up