php cURL远程访问

17 篇文章 0 订阅

直接封装成函数,自行使用


 

cURL GET

/**
*@desc 封闭curl的调用接口,get的请求方式。
*/
function doCurlGetRequest($url,$data,$timeout = 5, $header=0){
    if($url == "" || $timeout <= 0){
        return false;
    }
    $bulid = http_build_query($data);//转为字符串
    $url = $url .'?'.$bulid;
    //初始化
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, $header);
    //设置获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //设置时间
    curl_setopt($curl, CURLOPT_TIMEOUT, (int)$timeout);
    //执行命令
    $data = curl_exec($curl);
    //关闭URL请求
    curl_close($curl);
    //显示获得的数据
    return $data;
}

cURL POST

/**
 ** @desc 封装 curl 的调用接口,post的请求方式
 **/
function doCurlPostRequest($url,$post_data,$timeout = 5, $header=0){
    if($url == '' || $post_data == '' || $timeout <=0){
        return false;
    }
    //初始化
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, $header);
    //设置获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //设置post方式提交
    curl_setopt($curl, CURLOPT_POST, 1);
    //设置post数据
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    //设置时间
    curl_setopt($curl, CURLOPT_TIMEOUT,(int)$timeout);
    //执行命令
    $data = curl_exec($curl);
    //关闭URL请求
    curl_close($curl);
    //显示获得的数据
    return $data;

}

cURL GET/POST

//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
function curl_request($url,$post='',$cookie='', $returnCookie=0){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
    curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
    if($post) {
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
    }
    if($cookie) {
        curl_setopt($curl, CURLOPT_COOKIE, $cookie);
    }
    curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($curl);
    if (curl_errno($curl)) {
        return curl_error($curl);
    }
    $getinfo = curl_getinfo($curl);//curl_getinfo()函数获取CURL请求输出的相关信息
    curl_close($curl);
//    return $getinfo;
    if($returnCookie){
        $info = array();
        list($header, $body) = explode("\r\n\r\n", $data, 2);
        preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
        $info['cookie']  = empty($matches[1][0]) ? $matches : substr($matches[1][0], 1);
        $info['content'] = $body;
        return $info;
    }else{
        return $data;
    }
}

直接复制到自己公用函数库里就行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP 中,curl 错误号是通过 curl_errno 函数来获取的,具体对应关系如下: - 0:没有错误发生 - 1:CURLE_UNSUPPORTED_PROTOCOL(不支持的协议) - 2:CURLE_FAILED_INIT(初始化失败) - 3:CURLE_URL_MALFORMAT(URL 格式错误) - 4:CURLE_URL_MALFORMAT_USER(URL 格式错误) - 5:CURLE_COULDNT_RESOLVE_PROXY(无法解析代理) - 6:CURLE_COULDNT_RESOLVE_HOST(无法解析主机) - 7:CURLE_COULDNT_CONNECT(无法连接) - 8:CURLE_FTP_WEIRD_SERVER_REPLY(FTP 服务器返回异常) - 9:CURLE_REMOTE_ACCESS_DENIED(访问被拒绝) - 11:CURLE_FTP_WEIRD_PASS_REPLY(FTP 密码返回异常) - 13:CURLE_FTP_WEIRD_PASV_REPLY(FTP PASV 返回异常) - 14:CURLE_FTP_WEIRD_227_FORMAT(FTP 227 返回格式异常) - 15:CURLE_FTP_CANT_GET_HOST(FTP 无法获取主机) - 17:CURLE_FTP_COULDNT_SET_TYPE(FTP 无法设置传输类型) - 18:CURLE_PARTIAL_FILE(部分文件下载) - 19:CURLE_FTP_COULDNT_RETR_FILE(FTP 无法获取文件) - 20:CURLE_QUOTE_ERROR(FTP 命令错误) - 21:CURLE_HTTP_RETURNED_ERROR(HTTP 返回错误) - 22:CURLE_WRITE_ERROR(写入错误) - 23:CURLE_UPLOAD_FAILED(上传失败) - 25:CURLE_UPLOAD_FAILED(远程服务器不支持请求的FTP操作) - 26:CURLE_READ_ERROR(读取错误) - 27:CURLE_OUT_OF_MEMORY(内存不足) - 28:CURLE_OPERATION_TIMEDOUT(操作超时) - 30:CURLE_FTP_PORT_FAILED(FTP 端口失败) - 31:CURLE_FTP_COULDNT_USE_REST(FTP 无法使用 REST 命令) - 33:CURLE_RANGE_ERROR(服务器不支持或无法满足 Range 请求头字段) - 34:CURLE_HTTP_POST_ERROR(HTTP POST 错误) - 35:CURLE_SSL_CONNECT_ERROR(SSL 连接错误) - 36:CURLE_BAD_DOWNLOAD_RESUME(下载恢复错误) - 37:CURLE_FILE_COULDNT_READ_FILE(无法读取文件) - 38:CURLE_LDAP_CANNOT_BIND(LDAP 无法绑定) - 39:CURLE_LDAP_SEARCH_FAILED(LDAP 搜索失败) - 41:CURLE_FUNCTION_NOT_FOUND(找不到指定的函数) - 42:CURLE_ABORTED_BY_CALLBACK(被回调函数中止) - 43:CURLE_BAD_FUNCTION_ARGUMENT(调用函数时传入了不正确的参数) - 45:CURLE_INTERFACE_FAILED(CURL 接口失败) - 47:CURLE_TOO_MANY_REDIRECTS(重定向次数过多) - 48:CURLE_UNKNOWN_OPTION(未知选项) - 49:CURLE_TELNET_OPTION_SYNTAX(TELNET 选项语法错误) - 51:CURLE_PEER_FAILED_VERIFICATION(SSL 证书验证失败) - 52:CURLE_GOT_NOTHING(没有收到数据) - 53:CURLE_SSL_ENGINE_NOTFOUND(SSL 引擎未找到) - 54:CURLE_SSL_ENGINE_SETFAILED(SSL 引擎设置失败) - 55:CURLE_SEND_ERROR(发送数据错误) - 56:CURLE_RECV_ERROR(接收数据错误) - 58:CURLE_SSL_CERTPROBLEM(SSL 证书问题) - 59:CURLE_SSL_CIPHER(SSL 密码问题) - 60:CURLE_SSL_CACERT(SSL CA 证书问题) - 61:CURLE_BAD_CONTENT_ENCODING(不支持的内容编码) - 62:CURLE_LDAP_INVALID_URL(LDAP URL 无效) - 63:CURLE_FILESIZE_EXCEEDED(文件大小超出限制) - 64:CURLE_USE_SSL_FAILED(使用 SSL 失败) - 65:CURLE_SEND_FAIL_REWIND(发送失败,需要回滚) - 66:CURLE_SSL_ENGINE_INITFAILED(SSL 引擎初始化失败) - 67:CURLE_LOGIN_DENIED(登录被拒绝) - 68:CURLE_TFTP_NOTFOUND(TFTP 文件未找到) - 69:CURLE_TFTP_PERM(TFTP 权限问题) - 70:CURLE_REMOTE_DISK_FULL(远程磁盘已满) - 71:CURLE_TFTP_ILLEGAL(TFTP 操作非法) - 72:CURLE_TFTP_UNKNOWNID(TFTP 未知 ID) - 73:CURLE_REMOTE_FILE_EXISTS(远程文件已存在) - 74:CURLE_TFTP_NOSUCHUSER(TFTP 用户不存在) - 75:CURLE_CONV_FAILED(字符转换失败) - 76:CURLE_CONV_REQD(需要字符转换) - 77:CURLE_SSL_CACERT_BADFILE(SSL CA 证书文件格式错误) - 78:CURLE_REMOTE_FILE_NOT_FOUND(远程文件未找到) - 79:CURLE_SSH(SSH 错误) - 80:CURLE_SSL_SHUTDOWN_FAILED(SSL 关闭失败) - 81:CURLE_AGAIN(请求被中止,需要重试) - 82:CURLE_SSL_CRL_BADFILE(SSL CRL 文件格式错误) - 83:CURLE_SSL_ISSUER_ERROR(SSL 发行人错误) - 84:CURLE_FTP_PRET_FAILED(FTP PRET 命令失败) - 85:CURLE_RTSP_CSEQ_ERROR(RTSP CSEQ 错误) - 86:CURLE_RTSP_SESSION_ERROR(RTSP 会话错误) - 87:CURLE_FTP_BAD_FILE_LIST(FTP 文件列表错误) - 88:CURLE_CHUNK_FAILED(传输块失败) - 89:CURLE_NO_CONNECTION_AVAILABLE(没有可用的连接) - 90:CURLE_SSL_PINNEDPUBKEYNOTMATCH(SSL 锁定的公钥不匹配) - 91:CURLE_SSL_INVALIDCERTSTATUS(SSL 证书状态无效) - 92:CURLE_HTTP2_STREAM(HTTP2 流错误) - 93:CURLE_RECURSIVE_API_CALL(递归 API 调用) - 94:CURLE_AUTH_ERROR(身份验证错误) - 95:CURLE_HTTP3(HTTP3 错误) 希望这些信息对你有帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值