curl里面的坑

  如果在使用粗crul library来进行远程请求(API调用)的时候要注意的一个坑。就是要区别请求成功,请求失败,请求成功但返回为空。这里要特别注意后2者,稍不注意就会掉坑。因为如果请求的url不存在或者连接超时(各种原因)的时候返回结果为false.所以不要简单的认为返回的数据为空。可以用$result === false为真来判断请求失败。因为一般的API不会返回boolean值的。引申一下,如果你是在制作一个API也请不要随意的返回一个空数据为false.这样会很难区分到底是数据为空还是请求失败。就比如:

protected function send($parameters = array())
    {
        $apiUrl = "xxxxx";

        if ($parameters) {
            $apiUrl .= ‘&‘ . http_build_query($parameters);
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $apiUrl);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‘GET‘);
        curl_setopt($ch, CURLOPT_HEADER, 0);

        $result = curl_exec($ch);
        $curlErrno = curl_errno($ch);
        $curlError = curl_error($ch);
        curl_close($ch);

        if ($result && $curlErrno <= 0) {
            return json_decode($result, true);
        } else {
            exit("Error: " . $curlError . "\n");
        }
    }

或者这样也可以

1 if ($result === false) {
2     //请求失败
3 } else {
4     //请求成功
5 }

时间: 2024-10-11 23:41:18

curl里面的坑的相关文章

vue2.0使用axios交互里面的坑

vue使用axios交互时候会出现的问题大致有三个: 1:本地调试跨域问题? 2:post请求,传参不成功,导致请求失败? 3:axios引用,在使用的组件里面引用 解决方案: 问题一:跨域? 解决本地调试跨域问题? 反向代理---- 这个需要自己在配置文件里面去改配置,有个config下面的index.js文件 上图是没有修改的,至于具体怎么修改,可以百度下,当然如果实在不会的话就调试时候,先把代码写好, npm run build 打包给后台在他那调试 问题二:post请求,传参不成功,导致

ACCESS 里面的坑

在vs2005中用sql语句访问access数据库出现replace函数未定义错误,后来查询得知,在不能用replace访问access. 问题:   1.为什么以前运行正常的Access数据库,搬到另一台电脑上老出现XXXX函数未定义错误? 2.为什么我在Access中调试通过的sql语句,在VB/ASP/JSP/PHP/VB.NET/SQL SERVER中调用却老是出现XXX函数未定义错误? 3.在ACCESS中的模块中自定义了一个getV函数,在ACCESS查询中执行SQL语句 selec

提取数据库字段里面的值,并改变+图片懒加载,jquery延迟加载

要求:手机端打开某个页面的详细信息,因为网速或者别的原因,响应太慢,因为图片大的原因,希望先进来,图片在网页运行的情况再慢慢加载(jquer延迟加载) http://www.w3cways.com/1765.html()  困难:因为页面的图片是用编辑器加进去的        :图片与文字存到数据库的字段中 :实现思路:从数据库中读取这个字段,把字段里面的src替换成lazyload 然后再返回给页面 这里主要讲是怎么把从数据库取到的数据里面的字段里面的值替换然后与页面直接的数据转换 首先 pu

jmeter压测学习3-提取json数据里面的token参数关联

前言 现在很多接口的登录是返回一个json数据,token值在返回的json里面,在jmeter里面也可以直接提取json里面的值. 上一个接口返回的token作为下个接口的入参. 案例场景 我现在有一个登陆接口A,登陆成功后返回一个token值.有一个获取绑定卡号的接口B,但是接口B必须要先登录后传登录的token才能访问 A接口登录接口文档基本信息 访问地址:http://127.0.0.1:8000/api/v1/login/ 请求类型:POST 请求头部:application/json

Afianl框架里面的FinalBitmap加载网络图片

在Afianl框架里,FinalBitmap如何加载网络图片?有什么简单的方法吗?现在让麦子学院的android开发老师讲讲afina框架里面的finalbitmap加载网络图片的方法,Afinal里边FinalBitmap:用于显现bitmap图像,而无需思考线程并发和oom等疑问. 1.测验恳求 运用页面翻开http://avatar.csdn.net/C/6/8/1_bz419927089.jpg"可以看到一张图像. 2.新建FinalBitmap目标 1 FinalBitmap bitm

函数的上下文就是函数里面的this是谁

规律1:函数用圆括号调用,函数的上下文是window对象 比如小题目: function fun(){ var a = 888; alert(this.a); //实际上访问的是window.a } var a = 666; fun(); //弹出666 函数function fun(){}的上下文是什么!不要看它怎么定义,要看它怎么调用!!此时是fun()函数名加上圆括号直接调用,此时上下文就是window对象! 而我们知道:所有的全局变量都是window对象的属性,(注意:函数里面的局部变量

蒋步星:报表&数据分析平台里的坑

报表平台(或BI.数据分析平台)是指提供报表.统计图及其它BI组件(仪表盘.数据看板.分析报告等)的组织管理.权限控制.调度生成.发布订阅等功能的软件系统,让业务用户能随时随地地访问全企业的报表和数据.这是近五六年来报表和BI领域的一个热门需求,在基本业务系统建设较完善后,许多用户都希望把各系统中的报表和数据分析功能打通后统一管理. 在业界混久了,经常还能听到客户在实际用过某个报表工具后表扬该产品的话(当然骂声可能更多),但是用过之后还表扬某个报表或数据分析平台的话却几乎从没听说过!对于这类平台

如何去除项目里面的SVN和CVS文件夹

SVN和CVS是我们常使用的项目版本管理工具,为我们的工作带来了很大的方便.但是,有时候我们需要删除里面的SVN和CVS文件夹. 1 如何快速的删除项目中的版本控制文件夹  (1) 删除项目中的SVN文件夹.我们可以使用bat脚本来实现快速递归删除,代码如下: @echo off echo Deleting SVN folders and files under: %1 REM Open Folder specified by parameter. cd %1 REM Recursive del

直接修改别人jar包里面的class文件 工具:jclasslib

出于某些原因 需要把别人jar包里面的class修改一下信息 配置文件*.properties MANIFEST.MF 这些东西可以直接用记事本打开修改 然后替换掉就OK.. 在网上游荡了半天,没有找到合适的方法 开始我是先用jd-gui反编译 把我需要修改的那个A.class文件反编译出来把代码保存到A.Java 然后直接在dos里面用javac A.java编译 问题来了.. 因为A.java引用了很多其他jar下面的方法 而且A.java有package 鼓捣了半天以后 最终结果:编译无法