使用Guzzle发送表单数据始终返回404

问题描述 投票:0回答:1

我在使用Guzzle发送简单的多部分表单请求时遇到了困难。由于某些原因,我总是会收到404响应,但是我使用cURL发出了相同的请求,所以我获得了200的确定,并发布了数据。

即使解决了类似的问题,我似乎也无法弄清楚问题是什么。

这是我的cURL代码:

$body = shell_exec('curl -H \'Content-Type: multipart/form-data\' -H \'Accept: application/json\' \
-F "photo=@ "'.$photo.'" \
-F "api_key="'.$apiKey.'" \
-F "id=14784" \
"'.$apiUrl.'" 2>&1 > /dev/null 2>&1 &');

shell在命令行上运行良好,但是我需要对其进行转换以从控制器发出请求,因此我已将表单字段添加到Guzzle,但没有得到404。

这里是G子代码:

   $client = new Client(
            [
                'base_uri' =>  'http://httpbin.com',
                'headers' => [
                    'Accept' => 'application/json',
                    'Content-Type' => 'application/x-www-form-urlencoded'

            ]
        ]);
 $response = $client->post('http://httpbin.com', ['json' => [
                'form_params' => [
                    [
                        'name' => 'photo=@',
                        'contents' => $photo
                    ],
                    [
                        'name' => 'api_key',
                        'contents' => 'api_key_here'
                    ],
                    [
                        'name' => 'id',
                        'contents' => '14784',
                    ]
                ],
            ]]);

为了发布目的,我已经更改了网址,但是我正在努力寻找原因,因此,如果有人知道,请给我个头!

谢谢

laravel curl http-status-code-404 guzzle
1个回答
0
投票

[设置base_uri时,您不必在帖子中添加它。您很有可能会拨打类似于[http://httpbin.com/http://httpbin.com ,.]的网址。

$response = $client->post('/', ['json' => [
    'form_params' => [
        ....
    ],
]]);
© www.soinside.com 2019 - 2024. All rights reserved.