curl php json总是返回错误的响应

时间:2017-09-01 09:39:30

标签: php json curl

我需要你的帮助来检查我的代码是否有错误。 我试图从邮递员那里发布一个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发布数据,则返回正确的响应:

correct_response

2 个答案:

答案 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());
}