我需要你的帮助来检查我的代码是否有错误。 我试图从邮递员那里发布一个json数据,然后回复正确的回复。 但是以下代码总是返回错误的响应。
<?php
$data_login = array('email'=>'dada@dada.com','password'=>'hahaha','confirmation_password'=>'hahaha');
$api_data = json_encode($data_login);
$api_url = 'http://dev.badr.co.id/freedom/auth/register';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $api_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
错误回应:
{"success":false,"message":"1000: Not a valid request"}
正确回应:
{
"success": true,
"message": "user registration success",
"data": null
}
如果我使用postman发布数据,则返回正确的响应:
答案 0 :(得分:1)
如果curl_exec()
返回false
,则意味着请求以某种方式失败。
您可以使用curl_error()
function了解具体方法。在curl_exec()
和curl_close()
之间调用它,它将返回一个字符串,其中包含有关请求出错的信息。
答案 1 :(得分:0)
检查初始化和执行cURL函数的返回值。如果失败,curl_error()和curl_errno()将包含更多信息:
try {
$data_login = array('email'=>'dada@dada.com','password'=>'hahaha','confirmation_password'=>'hahaha');
$api_data = json_encode($data_login);
$api_url = 'http://dev.badr.co.id/freedom/auth/register';
$ch = curl_init();
if (FALSE === $ch)
throw new Exception('failed to initialize');
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $api_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
if (FALSE === $result)
throw new Exception(curl_error($ch), curl_errno($ch));
} catch(Exception $e) {
echo sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage());
}