使用--form将curl转换为python请求 [英] Converting curl with --form to python requests

查看:90
本文介绍了使用--form将curl转换为python请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的卷曲请求:

curl -X POST http://mdom-n-plus-1.nonprod.appsight.us:8081/mesmerdom/v1/getByScreen -F"data = {\" screen \:{\"screen-id \:\" 57675 \}}"

我正在尝试使用类似以下的方法将其转换为python:

I am trying to convert it to python by using something like this:

import requests
import json
url = "http://mdom-n-plus-1.nonprod.appsight.us:8081/mesmerdom/v1/getByScreen"
payload = {"data": json.dumps({"screen":["screen-id", "57675"]})}
req = requests.post(url, data=payload)
print (req.text)

但出现以下错误:

io.finch.Error $ NotPresent:请求中不存在必需的参数数据".

在这种情况下,将bash curl调用转换为python请求的最佳方法是什么?

What would be the best way to convert the bash curl call to python request in this case?

推荐答案

欢迎使用 stackoverflow.com .

-F 开关表示 form-encoded 数据.

传递 data 将使 Content-Type:x-www-form-urlencoded 但似乎服务器正在接受 Content-Type:multipart/form-data 因此我们也需要传递 files .但是由于服务器正在 form 中查找实际数据,因此我们也需要传递 data .所以这应该工作:

passing data makes the Content-Type: x-www-form-urlencoded but it seems that server is accepting Content-Type: multipart/form-data so we need to pass files as well. but since server is looking for actual data inside form we need to pass data as well. So this should work:

import requests

url = "http://mdom-n-plus-1.nonprod.appsight.us:8081/mesmerdom/v1/getByScreen"

payload = { 'data' : '{"screen" : {"screen-id": "57675"}}'}

req = requests.post(url, files=dict(data='{"screen":{"screen-id":"57675"}}'), data=payload)
print (req.text)

希望这会有所帮助.

这篇关于使用--form将curl转换为python请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆