我遇到了使用PHP中的curl_setopt函数进行格式化的问题。我基本上是在尝试重新创建下面的cURL请求,但我的代码从服务器返回一个错误的请求。我很确定它与格式不佳有关,但我无法弄清楚我哪里出错了。
//This code returns the data back successfully
curl -H "Content-Type: application/json" -d '{"bio_ids": ["1234567"]}' http://localhost:9292/program
<?php //This code returns a bad request from the server
$bio = array('bio_ids'=>'1234567');
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://localhost:9292/program',
CURLOPT_POST => 1, // -d
CURLOPT_POSTFIELDS => $bio,
CURLOPT_HTTPHEADER => array('Content-Type: application/json'), // -H
));
$resp = curl_exec($curl);
curl_close($curl);
?>
答案 0 :(得分:2)
有两个问题:
您需要确保$bio
的结构符合您预期的结果,因此$bio
声明必须是:
$bio = array('bio_ids' => array('1234567'));
其次,在将此数据结构发送到服务器之前,您需要json_encode
:
CURLOPT_POSTFIELDS => json_encode($bio),
答案 1 :(得分:1)
<?php //This code returns a bad request from the server
$bio = array('bio_ids'=>'1234567');
$bio = json_encode($bio);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://localhost:9292/program',
CURLOPT_POST => 1, // -d
CURLOPT_POSTFIELDS => $bio,
CURLOPT_HTTPHEADER => array('Content-Type: application/json'), // -H
));
$resp = curl_exec($curl);
curl_close($curl);
?>