Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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
Can';使用python请求的t post文件-从curl翻译_Python_Curl_Python Requests - Fatal编程技术网

Can';使用python请求的t post文件-从curl翻译

Can';使用python请求的t post文件-从curl翻译,python,curl,python-requests,Python,Curl,Python Requests,以下命令可以工作,但我无法使用python请求(2.18.4)复制它: 使用下面的发送设备,我收到“不支持的媒体类型” 在一些评论之后,我也尝试了,现在的错误是“无效的元数据Json字符串”: 确保有效负载的格式正确。有效负载中的第二个对象中似乎缺少“{” HTTP 415 Unsupported Media Type client错误响应代码表示服务器拒绝接受请求,因为负载格式为不受支持的格式 您应该将其作为文件(而不是数据)放置 r=requests.post(url,files={'fil

以下命令可以工作,但我无法使用python请求(2.18.4)复制它:

使用下面的发送设备,我收到“不支持的媒体类型”

在一些评论之后,我也尝试了,现在的错误是“无效的元数据Json字符串”:


确保有效负载的格式正确。有效负载中的第二个对象中似乎缺少“{”

HTTP 415 Unsupported Media Type client错误响应代码表示服务器拒绝接受请求,因为负载格式为不受支持的格式

您应该将其作为文件(而不是数据)放置

r=requests.post(url,files={'file':open('data.bz2','rb')})


工作正常。

在第一个示例中,缺少文件类型

'data': ('data.bz2', open('data.bz2', 'rb'), 'application/octet-stream'),
在第二个示例中,需要在相同的文件dict上添加额外的post数据。即使不是dict:

'metadata': ('metadata.csv', json.dumps({"extensions": ...}))}
解决方案:

def send_devices(basic_auth):
    endpoint_api = ' https://www....com'
    files = {'data': ('data.bz2', open('data.bz2', 'rb'), 'application/octet-stream'),
            'metadata': ('metadata.csv', json.dumps({"extensions": ...}))}
    response = requests.post(endpoint_api, files=files,
                             headers={'Authorization': 'Bearer {0}'.format(basic_auth)})

谢谢你的贡献,但这只是在这里编辑时的一个输入错误…是的,实际上我也在尝试,但错误现在是“无效的元数据Json字符串”。我编辑了这个问题。这样做请求(curl和python)以查看差异。太好了!用于调试,尝试几次后,成功了。将尽快发布答案
'data': ('data.bz2', open('data.bz2', 'rb'), 'application/octet-stream'),
'metadata': ('metadata.csv', json.dumps({"extensions": ...}))}
def send_devices(basic_auth):
    endpoint_api = ' https://www....com'
    files = {'data': ('data.bz2', open('data.bz2', 'rb'), 'application/octet-stream'),
            'metadata': ('metadata.csv', json.dumps({"extensions": ...}))}
    response = requests.post(endpoint_api, files=files,
                             headers={'Authorization': 'Bearer {0}'.format(basic_auth)})