PHP中curl库的CURLOPT_HEADER和CURLOPT_HTTPHEADER

昨天在写一段程序的时候卡了好久,卡在了一段curl代码上面:

	$ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $config['ocr_api']);

    $headers = [
        'X-Appid:' . $appid,
        'X-CurTime:' . $cur_time,
        'X-Param:' . $x_param,
        'X-CheckSum:' . $x_check_sum
    ];
    $body = base64_encode(file_get_contents($pic_path));
    curl_setopt($ch, CURLOPT_HEADER, $headers);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
        'image' => $body
    ]));
    $result = curl_exec($ch);

这一段代码其实是调用能力平台的一个ocr接口,传过去一张图片的数据,返回图片中的文本内容。感兴趣的可以试着看下哪里问题。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
答案是curl_setopt($ch, CURLOPT_HEADER, $header)
我是直播的时候在写这段代码,可能由于紧张并没有发现一个类似笔误的错误。因为设置curl的参数时,CURLOPT_HEADER表示获取请求头信息,而如果想设置header内容,则需要使用到CURLOPT_HTTPHEADER这个参数。这次的调试反映出了三个问题:

  • 我没有代码编译器般的大脑,这种细节问题真的很难发现;
  • 对CURLOPT参数不够熟悉;
  • php这种弱变量类型的编程语言,很方便,随便写,但如果碰到类似的问题,真的需要肉眼去debug,编译器是没办法帮我们定位到这个问题的。换而言之,如果我使用的是java,针对于CURLOPT_HEADER这个参数,接收的类型只有true or false,那么当我传一个array过去的时候,java的编译器就会报错,这样就不会出现这种问题了。所以说,弱变量,有利有弊,双刃剑~~

仅以为记~~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值