【问题标题】:How do I convert CURL to Guzzle HTTP?如何将 CURL 转换为 Guzzle HTTP?
【发布时间】:2021-09-08 18:50:36
【问题描述】:

我正在尝试将 curl 请求转换为 Guzzle:

curl --location --request POST 'https://shopify.s3.amazonaws.com' \
        --form 'key="tmp/436699194/bulk/4fed3d0c/bulk-customer-insert-file.jsonl"' \
        --form 'x-amz-credential="AKIAJYM55WGJDKQ/20210625/us-east-1/s3/aws4_request"' \
        --form 'x-amz-algorithm="AWS4-HMAC-SHA256"' \
        --form 'x-amz-date="20210625T105058Z"' \
        --form 'x-amz-signature="6c02b9f5dff8dd57d04bcdef3e3e602cad09fa719ffd84d"' \
        --form 'policy="policy"' \
        --form 'acl="private"' \
        --form 'Content-Type="text/jsonl"' \
        --form 'success_action_status="201"' \
        --form 'file="https://files.com/uploads/imports/12841.jsonl"'

curl 请求正常工作,但是当我尝试将它转移到 Guzzle 时,它​​停止工作并返回错误:

 $response = (new Client([
                'headers' => ['Content-Type' => 'multipart/form-data']
            ]))->post('https://shopify.s3.amazonaws.com', [
                'form_params' => [
                    'key' => 'tmp/436699194/bulk/492f28bf-d0c/bulk-customer-insert-file.jsonl',
                    'x-amz-credential' => 'AKIAJYKQ/20210625/us-east-1/s3/aws4_request',
                    'x-amz-algorithm' => 'AWS4-HMAC-SHA256',
                    'x-amz-date' => '20210625T05058Z',
                    'x-amz-signature' => '6c02b9f5dcde2cafa719ffd84d',
                    'policy' => 'policy',
                    'acl' => 'private',
                    'Content-Type' => 'text/jsonl',
                    'success_action_status' => '201',
                    'file' => 'https://files.com/uploads/imports/12841.jsonl',
                ],
            ]);

错误:

<Error><Code>InvalidArgument</Code><Message>Conflicting query string parameters: acl, policy</Message><ArgumentName>ResourceType</ArgumentName><ArgumentValue>acl</ArgumentValue><RequestId>P6V9RFVQNMW249XD</RequestId><HostId>GhCPTKO2P/VysP90bvFI5lXiyzF0IlSX//rotCB/hTtxy8tQMcwqKh8j397VdMKYvD1UL+aEgMo=</HostId></Error>

文档声明:“您必须使用多部分表单,并将所有参数作为表单输入包含在请求正文中。”

【问题讨论】:

  • 尝试使用 multipart 而不是 form_params ?运气好的话,这是你做错的唯一一件事。
  • @hanshenrik 是的,不走运。 :(

标签: php curl guzzle


【解决方案1】:

使用 multipart 代替 form_params 效果很好!

【讨论】:

    猜你喜欢
    • 2020-05-01
    • 2022-07-29
    • 1970-01-01
    • 2021-02-19
    • 2013-10-30
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    相关资源
    最近更新 更多