CURL处理POST、GET请求

Curl是一个库,它允许你通过各种协议和各种不同的服务器进行连接和通讯

a.php

<?php
function curlRequest($url,$data=''){
  $ch=curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//不验证证书
  if(!empty($data)){
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//如果返回的不是json数组,$data要用http_build_query()处理一下
  }
  $output=curl_exec($ch);
  $errno=curl_errno($ch);
  if($errno!=0) return false;
  curl_close($ch);
  return json_decode($output,true);//将json数据转换为数组,如果不加true参数,会返回一个stdClass对象
}
//测试
$url="http://www.luoqiusa.top/wx/b.php";
$data=array('name'=>'yolo');
$res=curlRequest($url,$data);
print_r($res);

 输出为:

b.php

<?php
if(isset($_POST['name'])){
    $jsonObj='{"name":"yolo","age":23}';
    print_r($jsonObj); //注意这里一定要输出,不能用return,低级错误
 }

说明:主要是测试post请求,a.php请求b.php,如果b.php收到了post过来的数据,则返回一个json字符串

知识点:

1、$jsonObj='{"name":"yolo","age":23}';

  1. echo gettype($jsonObj);    //输出string
  2. $jsonObj=json_decode($jsonObj);
    echo gettype($jsonObj);    //输出object
  3. $jsonObj=json_decode($jsonObj,true);
    echo gettype($jsonObj);    //输出array

简而言之,json_decode($jsonObj,true)的第二个参数true将json字符串转换为数组

2、如果b页面返回的不是json数据,那么a页面传入的data要用http_build_query()处理一下

原文地址:https://www.cnblogs.com/yolo-bean/p/7802474.html