* @version $Id$

*/

class cls_http_request

{

/**

* get方式请求(curl)

*

* @param string $url 请求的url

* @param integer $timeout 超时时间(s)

* @return string(请求成功) | false(请求失败)

*/

public static function curl_get($url, $timeout = 1)

{

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

$result = curl_exec($ch);

curl_close($ch);

if (is_string($result) && strlen($result))

{

return $result;

}

else

{

return false;

}

}

/**

* post方式请求

*

* @param string $url 请求的url

* @param array $data 请求的参数数组(关联数组)

* @param integer $timeout 超时时间(s)

* @return string(请求成功) | false(请求失败)

*/

public static function curl_post($url, $data, $timeout = 2)

{

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

$result = curl_exec($ch);

curl_close($ch);

if (is_string($result) && strlen($result))

{

return $result;

}

else

{

return false;

}

}

/**

* 多个url并行请求

*

* @param array $urls url数组

* @param integer $timeout 超时时间(s)

* @return array $res 返回结果

*/

public static function curl_get_urls($urls, $timeout = 1)

{

$mh=curl_multi_init();

$chs=array();

foreach($urls as $url)

{

$ch=curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_HEADER,false);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1);

curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);

curl_multi_add_handle($mh,$ch);

$chs[]=$ch;

}

$active=null;

do {

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

}while($mrc == CURLM_CALL_MULTI_PERFORM);

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

{

if(curl_multi_select($mh) != -1)

{

do{

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

}while($mrc == CURLM_CALL_MULTI_PERFORM);

}

}

$res=array();

foreach($chs as $ch)

{

$res[]=curl_multi_getcontent($ch);

curl_multi_remove_handle($mh,$ch);

}

curl_multi_close($mh);

return $res;

}

}

php 处理 http 请求,PHP的http请求处理类相关推荐

  1. HTTP请求上下文之终结:HttpContext类

    在处理请求执行链的各个阶段中,会有一个对象在各个对象之间进行传递,也即会保存请求的上下文信息,这个对象就是HttpContext对象.HttpContext粉状了ASP.NET要处理的单次请求的所有信 ...

  2. spring MVC请求处理类注解属性详解

    spring MVC请求处理类注解属性详解

  3. Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    阅读目录 1. 通过HttpServletRequest获得请求参数和数据 2. 处理方法形参名==请求参数名 3. 如果形参名跟请求参数名不一样怎么办呢?用@RequestParam注解 4. 用实 ...

  4. springboot处理参数再转发请求_Springboot 2.0---WebFlux请求处理流程

    笔记是学习了小马哥在慕课网的课程的<Spring Boot 2.0深度实践之核心技术篇>的内容结合自己的需要和理解做的笔记. 前言 在了解了WebFlux核心组件之后,我们就该了解相应的请 ...

  5. RxHttp 一条链发送请求之强大的Param类(三)

    简介 前面我们对RxHttp做了整体的介绍,我们知道,使用RxHttp库发送请求,有两种方式.一种通过Param+HttpSender的形式,另外一种是直接使用RxHttp类,而RxHttp类内部其实 ...

  6. java http请求 工具类_java模拟http请求调用远程接口工具类

    package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...

  7. 网络请求以及网络请求下载图片的工具类 android开发java工具类

    2019独角兽企业重金招聘Python工程师标准>>> package cc.jiusan.www.utils;import org.apache.http.HttpEntity; ...

  8. 14、阿里云短信Demo演示、Http的Get请求和Post请求演示、httpClient工具类演示、发送短信模块搭建、搭建用户中心模块、完成user注册基本功能、验证码存入redis、短信验证码注册

    阿里云短信Demo演示 一.前端部分 无前端. 二.后端部分 1.创建发送短信测试模块SmsSendDemo,不用使用骨架. 2.在pom文件中引入依赖坐标 <dependency>< ...

  9. SpringCloud请求异常处理封装BusinessException自定义异常类

    文章目录 请求异常处理 1 异常信息格式 2 异常处理流程 3 自定义业务异常类 4 自定义业务异常处理器 5 抛出自定义异常 请求异常处理 1 异常信息格式 系统在交互中难免会有异常发生,前端为了解 ...

最新文章

  1. debian手动安装java两种方法
  2. 技术剖析 | Axonius为什么能获得 2019 RSAC创新大奖
  3. Coolite Cool Study 3 MVC + Coolite 的例子
  4. epoll 的accept , read, write
  5. 通过rsync清除目录的shell脚本
  6. 你当真了解count(*)count(id)count(1)吗?
  7. HTML 5 的自定义 data-* 属性和jquery的data()方法的使用
  8. gerber文件怎么导贴片坐标_SMT贴片机在线编程调试
  9. 三层架构(我的理解及具体分析)
  10. EasyPR 环境配置
  11. 西安电子科技大学-随机信号分析大作业
  12. 在禁用UAC时无法激活此应用
  13. java 枚举类使用反射
  14. 新型智慧城市投融资经验分享
  15. 大学英语综合教程三 Unit 7 课文内容英译中 中英翻译
  16. h5文件格式数据集制作
  17. linux-逻辑卷管理
  18. 怎么用快捷键快速切换电脑
  19. 我幼儿园的弟看了都直呼简单的【栈和队列】
  20. Shopee店铺没有流量?3步教你如何诊断店铺

热门文章

  1. Cloudera maneger登录页面后的操作是什么?
  2. Leet Code OJ 2. Add Two Numbers [Difficulty: Medium]
  3. python生物数据分析师职业技能_数据分析行业各个职业需要的技能是什么?
  4. SpringBoot的@SpringBootApplication注解和其他几个注解
  5. Effective Java之用接口模拟可伸缩的枚举(三十四)
  6. 01.elasticsearch-mapping全面解析
  7. Paas是什么——Go语言相关学习笔记
  8. 统一过程(UP)定义了初启阶段、精化阶段、构建阶段、移交阶段和产生阶段,每个阶段以达到某个里程碑时结束,其中()的里程碑是生命周期架构。 A.初启阶段 B.精化阶段 C.构建阶段 D.移交阶段
  9. 远程图片保存到服务器 php,保存远程图片到本地服务器几种方法[php,asp]网
  10. opengl三维图形绘制_Python matplotlib绘图示例 - 绘制三维图形