当前位置:首页 > CN2资讯 > 正文内容

PHP curlphp curl post json

18小时前CN2资讯

PHP 发送请求常用 filegetcontents curl 本文就分享 curl 的一些常用使用,来自 https:///articles/8

常用选项

  • // 设置 REQUEST HEADER 头

  • $arrHearders = [

  •    'Accept-Language:zh-CN,zh;q=0.8',

  •    'Connection:keep-alive',

  • ];

  • $strUrl = '请求地址';

  • $ch = curl_init();

  • // 设置请求 User-Agent, 值是字符串

  • curl_setopt($ch, CURLOPT_USERAGENT, $strUserAgent);

  • // 设置请求 HTTP-HEADER 头,值是数组

  • curl_setopt($ch, CURLOPT_HTTPHEADER, $arrHearders);

  • // 禁止 SSL 验证

  • curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

  • // 请求的 URL 地址

  • curl_setopt($ch, CURLOPT_URL, $strUrl);

  • // curl_getinfo 结果里面增加请求的 Headers 信息

  • curl_setopt($ch, CURLINFO_HEADER_OUT, true);

  • // cURL 函数执行的最长秒数

  • curl_setopt($ch, CURLOPT_TIMEOUT, 300);

  • // 在尝试连接时等待的秒数。设置为0,则无限等待

  • curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);

  • // 执行结果中是否包含响应的 Headers 头信息

  • curl_setopt($ch, CURLOPT_HEADER, false);

  • // curl_exec 执行的结果不自动打印出来

  • curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  • // 执行

  • $result = curl_exec($ch);

  • // 获得执行的的信息

  • $arrCurlExecInfo = curl_getinfo($ch);

  • // 关闭 curl

  • curl_close($ch);

  • var_dump($arrCurlExecInfo);

  • if (!isset($arrCurlExecInfo['http_code'])

  •    || 200 != $arrCurlExecInfo['http_code']) {

  •    die('请求失败');

  • }

  • if (empty($result)) {

  •    die('请求结果为空');

  • }

  • // 打印请求结果

  • var_dump($result);

  • POST 请求

  • // 设置为 POST 请求

  • curl_setopt($ch, CURLOPT_POST, 1);

  • // POST 请求的数据. 如果数据是 URL-encoded 字符串时, 数据会被编码成 application/x-www-form-urlencoded. 如果数据是 Array 数组, 数据编码成 multipart/form-data

  • curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

  • // 需要注意 5.6 以上上传文件不支持@语法,使用类 curlfile 代替

  • COOKIE 相关

  • // 第一种方法。自行设定 COOKIE 值

  • curl_setopt($ch, CURLOPT_COOKIE, '设置请求中的 COOKIE 部分');

  • // 第二种方法。先 Curl 一次拿到 COOKIE 并保存到指定文件,第二次 Curl 设置参数读取 COOKIE

  • curl_setopt($ch, CURLOPT_COOKIEJAR, '指定保存到的文件'); // 把访问得到的 COOKIE 保存到指定文件里面

  • curl_setopt($ch, CURLOPT_COOKIEFILE, '保存 COOKIE 的文件路径名称'); // 从指定文件当中读取 COOKIE

  • 代理相关

  • // 代理协议  CURLPROXY_HTTP (默认值,代理为 HTTP、HTTPS 都设置此值)、 CURLPROXY_SOCKS4、 CURLPROXY_SOCKS5、 CURLPROXY_SOCKS4A、CURLPROXY_SOCKS5_HOSTNAME

  • curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);

  • // 代理地址

  • curl_setopt($ch, CURLOPT_PROXY, $strProxyServer);

  • // 代理端口号,也可以写在代理地址里面

  • curl_setopt($ch, CURLOPT_PROXYPORT, $strProxyPort);

  • // 代理的用户名和密码

  • curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$strProxyUser:$strProxyPassWord");

  • 并发批处理相关

  • /**

  • * 调用方法时传入 url 数组,返回 curl_info 信息、错误信息、执行结果信息

  • * @param  arr $arrUrls      url 数组

  • * @retunr arr $arrResponses 返回 curl 执行情况、错误信息、返回结果的多维数据

  • * [

  • *    '$arrUrls键名' => [

  • *        'curl_info'     => curl 执行情况信息,

  • *        'curl_error'    => curl 执行错误信息,

  • *        'curl_results'  => curl 执行执行结果,

  • *     ],

  • *    '$arrUrls键名' => [

  • *        'curl_info'     => curl 执行情况信息,

  • *        'curl_error'    => curl 执行错误信息,

  • *        'curl_results'  => curl 执行执行结果,

  • *     ],

  • *     ......

  • * ]

  • */

  • function curl_multi_task($arrUrls) {

  •    // 创建批处理 cURL 句柄

  •    $mh = curl_multi_init();

  •    $responsesKeyMap = [];

  •    $arrResponses = [];

  •    // 添加 Curl 批处理会话

  •    foreach ($arrUrls as $urlsKey=>$strUrlVal) {

  •        $ch = curl_init();

  •        curl_setopt($ch, CURLOPT_URL, $strUrlVal);

  •        curl_setopt($ch, CURLOPT_HEADER, 0);

  •        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  •        curl_multi_add_handle($mh, $ch);

  •        $strCh = (string) $ch;

  •        $responsesKeyMap[$strCh] = $urlsKey;

  •    }

  •    // 批处理执行

  •    $active = null;

  •    do {

  •        $mrc = curl_multi_exec($mh, $active);

  •    } while (CURLM_CALL_MULTI_PERFORM == $mrc);

  •    while ($active && CURLM_OK == $mrc) {

  •        if (-1 == curl_multi_select($mh)) {

  •            usleep(100);

  •        }

  •        do {

  •            $mrc = curl_multi_exec($mh, $active);

  •            if (CURLM_OK == $mrc) {

  •                while ($multiInfo = curl_multi_info_read($mh)) {

  •                    $curl_info    = curl_getinfo($multiInfo['handle']);

  •                    $curl_error   = curl_error($multiInfo['handle']);

  •                    $curl_results = curl_multi_getcontent($multiInfo['handle']);

  •                    $strCh       = (string) $multiInfo['handle'];

  •                    $arrResponses[$responsesKeyMap[$strCh]] = compact('curl_info', 'curl_error', 'curl_results');

  •                    curl_multi_remove_handle($mh, $multiInfo['handle']);

  •                    curl_close($multiInfo['handle']);

  •                }

  •            }

  •        } while (CURLM_CALL_MULTI_PERFORM == $mrc);

  •    }

  •    // 关闭资源

  •    curl_multi_close($mh);

  •    return $arrResponses;

  • }

    • 你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/26366.html

      标签: PHPcurl
      分享给朋友:

      “PHP curlphp curl post json” 的相关文章