zoukankan      html  css  js  c++  java
  • php curl调用相关api

    一、基本步骤

    1、本次模拟是php的相关post请求,可通过CURLOPT_CUSTOMREQUEST设定相关POST、GET、PUT、DELETE相关适应REST API

    2、相关重要的是curl_setopt() API,中的参数可参考

    php curl_setopt手册

    3、相关请求代码

    $ch = curl_init();   //初始化
    $url = "http://123.207.95.161/buyTogether/Login.php";
    $post_data = array("userId" => "b", "password" => "b");
    $post_data = json_encode($post_data);
    
    
    //设置选项,包括url
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_DIGEST);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'admin:admin');
    
    
    // 抓取URL并把它传递给浏览器
    $output = curl_exec($ch);
    // 关闭cURL资源,并且释放系统资源
    
    curl_close($ch);
    print_r($output);
    

    二、问题所在

    1、在服务器端的接口,通过$_POST接受不到数据,如果注释掉下述这句话,则可以接受成功。

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    

    2、然后需求是一定要用Content-Type: application/json的格式发送,找了相关方法后,从此文中得到帮助

    四种常见的提交POST提交数据的请求

    如果采用Content-Type: application/json这个格式的话,是无法用$_POST接收,所以要修改服务器端的接口代码

    header("content-type:application/json; charset=utf-8");
    require_once 'Login.class.php';
    
    $input = file_get_contents('php://input');
    var_dump($input);
    $object = json_decode($input);
    $userId = $object->userId;
    $password = $object->password;
    

    通过采用file_get_contents('php://input')json_decode()去获取相关json数据,最后终于成功

    3、在请求curl的代码中的array记得json_encode(),不然还是会错误

    $post_data = array("userId" => "b", "password" => "b");
    $post_data = json_encode($post_data);
    
  • 相关阅读:
    分清抽象类和接口的区别
    【Android界面实现】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
    Android多线程----异步消息处理机制之Handler详解
    Android中关于Handler的若干思考
    Axure Base 09 带遮罩层的弹出框
    Axure Base 08 动态面板的用途
    Axure Base 07 元件使用思路的补充
    Axure Base 03
    Axure Base 02
    Axure Base 01
  • 原文地址:https://www.cnblogs.com/wpqwpq/p/6286402.html
Copyright © 2011-2022 走看看