如何下载通过Curl命令从GET api响应接收的文件(* .txt或* .pdf)?

时间:2019-05-03 12:35:30

标签: shell api curl postman

我想通过GET api请求从Ariba网站下载文件(* .txt和* .pdf),并且希望自动化整个下载过程。 最初,我将Postman用于测试目的,以文件内容的形式给出结果。 例如。 test.txt文件存在于远程站点上,在收到邮递员的GET请求后,我得到的结果是以文件内容的形式出现的,因此,如果在文件中写入了“ abc”,则我将从响应中得到“ abc” test.txt文件。

现在,如果我点击邮递员中的“发送并下载”按钮,它将为我提供下载文件“ test.txt”的选项。

我必须使此过程自动化以发送GET响应并在特定位置下载所需的文件。我正在尝试为此使用Curl脚本。

我已经编写了相应的Curl脚本并尝试执行它。 它以文件内容的形式给我答复。

class NewUserForm(UserCreationForm):
    email = forms.EmailField(required=True)


    class Meta:
        model = User
        fields = ("username", "email", "password1", "password2")


    def save(self, commit=True):
        user = super(NewUserForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        if commit:
            user.save()
        return user

我想编写一个curl脚本,它将在特定位置下载文件。 例如。在curl命令上方,从文件Test.txt提供内容(abc),而不是文件Test.txt作为输出

非常感谢您的帮助Curl Get Response

Postman Get Response

1 个答案:

答案 0 :(得分:0)

最后我得到了问题的答案,我只需要从我的curl脚本中删除-X GET,最后添加-o即可下载文件名。 下面是最终代码:

curl  'https://openapi.ariba.com/api/approval/v1/prod/invoices/INVASINV6-902/attachments/bnMyMDE5LxxxxLzE1MjkyNDE4MQ==?realm=ProjectName' \
  -H 'Accept: */*' \
  -H 'Authorization: Bearer 77876887-xxxxx-42fb-b865-9cf8ff5c2b25' \
  -H 'Cache-Control: no-cache' \
  -H 'Connection: keep-alive' \
  -H 'Host: openapi.ariba.com' \
  -H 'accept-encoding: gzip, deflate' \
  -H 'apiKey: XXXXXXXXXXXXXXXX' \
  -H 'cache-control: no-cache' \
  -H 'Content-Type: application/octet-stream' \
  -H "Content-Transfer-Encoding: Binary" \
  -o "Test.txt"

以上代码为我提供了在特定位置下载的文件。 谢谢BlackPearl。