【问题标题】:In codeigniter api I am getting 400 bad request always in android but getting 200 in postman在codeigniter api中,我总是在android中收到400个错误请求,但在邮递员中收到200个
【发布时间】:2018-08-14 05:33:31
【问题描述】:

这是我的注册代码,当我在 android 中点击 api 时,我总是收到 400 个错误请求作为响应,但在邮递员中,我收到 200 个响应,这是我的问题。请帮忙。这是我的控制器代码。

验证注册数据并保存。

public function register_user_get()
{

    $user_data = $_GET['user_details'];

    $user_details_arr = array();

    $user_details_arr = json_decode($user_data);

    $username_exist = $this->apilogin_model->check_username_exists($user_details_arr->username);
    if(!empty($username_exist))
    {
        $response = array(
            'message'=>'Username is already exist',
            'status'=>false
        );

        $this->response($response,200);
    }

    $referred_by = $user_details_arr->referred_by;  //'company';


    if($referred_by == 'company')
    {
        $referral_code = ROOT_REFERRAL_CODE;
        $user = $this->apilogin_model->get_user_details_by_referral_code($referral_code);

        if(empty($user))
        {
            // if referral code in invalid
            $response = array(
                'message'=>'Invalid Referral code',
                'status'=>false
            );
            $this->response($response,200);
        }
    }
    else if($referred_by == "manual")
    {
        $referral_code = $user_details_arr->referral_code;
        $user = $this->apilogin_model->get_user_details_by_referral_code($referral_code);

        if(empty($user))
        {

            $response = array(
                'message'=>'Invalid Referral code',
                'status'=>false
            );
            $this->response($response,200);
        }
    }
    else
    {

    }   


    $parent_id = $user[0]->id;


    $data = array(
        'name' => $user_details_arr->name,
        'username' => $user_details_arr->username,
        'password' => md5($user_details_arr->password),
        'paytm_no' => $user_details_arr->paytm_no,
        'mobile_no' => $user_details_arr->mobile_no,
        'email_id' => $user_details_arr->email_id,
        'parent_id' => $parent_id,
        'referral_code' => $this->generate_code(), // for generate 10 digit unique referral code
        'is_deleted' => 'N',
        'created_at' => date('Y-m-d H:i:s'),
        'updated_at' => date('Y-m-d H:i:s'),
    ); 

    $res = $this->apilogin_model->save_affiliate_data($data); 
    $transaction_data = $this->parent_get($res,$parent_id,LEVEL_FOR_HELP);
    $child_arr = array(
                'sender_id' =>$res,
                'receiver_id' =>COMPANY_ID,
                'status'=>0,
                'created_at' =>date('Y-m_d H:i:s')
            );

    array_push($transaction_data,$child_arr);
    //$this->db->set($transaction_data);

    $this->db->insert_batch(DB_PREFIX.'_transaction', $transaction_data);

    if($res > 0) 
    {
        // if data saved successfully
        $response = array(
            'message'=>'Registered Successfully',
            'status'=>true
        );

        $this->response($response,200);
    }
    else
    {
        // if data doesn't saved successfully
        $response = array(
            'message'=>'Registration Failed',
            'status'=>false
        );

        $this->response($response,200);
    }
}

虽然我在邮递员中调用相同的函数,但它工作正常,但在尝试使用 android 时,我收到 400 个错误请求,即使我在代码中的任何地方都没有响应 400。

【问题讨论】:

  • 旁注: 看起来您正在使用md5() 进行密码散列。不要那样做!这是非常不安全的。请改用 PHP 的 password_hash()password_verify()。如果您运行的 PHP 版本低于 5.5(我真的希望您不是),您可以使用 password_compat library 来获得相同的功能。
  • 我还建议在向服务器发送数据时使用POST,并且仅在要获取数据时使用GET
  • 好的,谢谢你的建议
  • 响应的可能是 Web 服务器,而不是您的代码。您是否调试过代码以查看您的 android 代码实际尝试调用的 URL?但正如我所建议的,如果您改用 POST,则不会遇到错误编码的 URL 数据的问题,因此这应该是第一个行动方案。
  • @vijendrachouhan 检查我的更新答案

标签: php rest codeigniter android-studio


【解决方案1】:

您得到 400 的原因是您试图将不允许的字符(例如(@))传递给 CodeIgniter 而不对其进行编码。

为了解决这个问题,请尝试从您的 android 端对输入进行编码

或者启用一些特殊字符,例如在您的注册电子邮件中使用的 (@),...从 Code Igniter 配置中。

$config['permitted_uri_chars']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多