我在使用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',
]
],
]]);
为了发布目的,我已经更改了网址,但是我正在努力寻找原因,因此,如果有人知道,请给我个头!
谢谢
[设置base_uri时,您不必在帖子中添加它。您很有可能会拨打类似于[http://httpbin.com/http://httpbin.com
,.]的网址。
$response = $client->post('/', ['json' => [
'form_params' => [
....
],
]]);