2

真的很感激一些帮助,以了解我所缺少的。我有一个有效的 curl 命令,我需要使用请求映射到一个相等的 python 函数。

我所有的尝试都以失败告终:
requests.exceptions.ConnectionError: ('Connection aborted.', error(32, 'Broken pipe'))

原来的 curl 命令是:
curl -X POST " https://xxxx/api/upload " -H "accept: application/json" -H "authorization: Basic BlaBla" -H "Content-Type: multipart/form-data " -F "file=@SomeFile.zip;type=application/zip"

我失败的python代码是:

def importZip(self, fAuth, infile, dir=''):
    trgtURL = fAuth.url+"/api/upload"
    headers = {'Content-Type': 'multipart/form-data'}
    data = {'upload':''}
    files = {'file': (infile, open(dir+infile,'rb'))}
    r = fAuth.session.post(trgtURL, files=files, data=data)

fAuth 只是我用来验证和保留会话以进行后续呼叫的类。我可以使用 fAuth 实例来做没有问题,所以我怀疑问题与底层会话无关。

非常感谢任何想法或见解。

4

1 回答 1

1
  1. -H "accept: application/json" -H "Content-Type: multipart/form-data"等于{"Accept": "application/json"}在python中。Content-Type没有必要,因为库会添加它。
  2. -H "authorization: Basic BlaBla"标题有点特别。所以你应该阅读身份验证

所以你的工作是添加身份验证参数,并通过你的命令示例修改你的标题。

def importZip(self, fAuth, infile, dir=''):
    trgtURL = fAuth.url+"/api/upload"
    headers = {"Accept": "application/json"}
    files = {'file': (infile, open(dir+infile,'rb'), "application/zip")}
    auth = (user,passwd)
    r = fAuth.session.post(trgtURL, headers=headers, files=files, auth=auth)
于 2018-12-03T05:42:04.073 回答