php7实现http和https请求web服务-通用工具类

前段时间做微信开发,因微信有众多接口调用,因此自己整理了一套比较通用的工具类,用以做接口 调用,考虑到方便性和简洁性,这里选择使用php的curl扩展库来实现

1 curl启用和apache的配置

先来看看网友们提供的众多错误方法,本人被这些资料坑的太惨 了

(1)把dll复制到system32(64位的路径是其他)附带重启apache

(2) 直接到php.ini开启curl扩展即可(这个哪有那么简单)

 正确的做法如下:

首先打开curl扩展,直接去php.ini里修改:

; Notes for Windows environments :
;
; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+)
;   extension folders as well as the separate PECL DLL download (PHP 5+).
;   Be sure to appropriately set the extension_dir directive.
;
;extension=bz2
extension=curl

接着修改apache的配置文件httpd.conf,在最后加上如下配置,路径按需修改

LoadFile D:/phpenv/php7/php7ts.dll
LoadFile D:/phpenv/php7/libeay32.dll
LoadFile D:/phpenv/php7/ssleay32.dll
LoadFile D:/phpenv/php7/libssh2.dll 

2  直接上工具类代码

<?php
class RequestUtil{
    function https_request($url,$data=null){
        $curl=curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        if(!empty($data)){
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            curl_setopt($curl,CURLOPT_POST, true);
            
        }
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $result=curl_exec($curl);
        curl_close($curl);
        
        return $result;
    }
    
    function http_request($url,$data=null){
        $curl=curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        if(!empty($data)){
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            curl_setopt($curl,CURLOPT_POST, true);
            
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $result=curl_exec($curl);
        curl_close($curl);
        
        return $result;
    }
}
?>

 工具类没写什么注释,如果看不明白,查阅下php开发手册,里面有详细说明

3 有关$data的注意事项

大部分post请求,只需要把参数写到一个数组里,以微信自定义菜单的创建接口做说明,如下:

$data=json_encode($menuJson,JSON_UNESCAPED_UNICODE)

一些情况下,请求的body可能只是一个字符串,此时直接拼接参数即可

$postStr=array("api_key"=>"xxx_","api_secret"=>"xxx","image_base64"=>$res,"return_attributes"=>"gender,age,ethnicity");
        
        $o = "";
        foreach ( $postStr as $k => $v )
        {
            $o.= "$k=" . urlencode( $v ). "&" ;
        }
        $postStr = substr($o,0,-1);

这里的$postStr和$data代表同一个东西

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值