php访问url(get和post请求)
- get请求
/* * php访问url路径,get请求 */ function curl_file_get_contents($durl){ // header传送格式 $headers = array( "token:1111111111111", "over_time:22222222222", ); // 初始化 $curl = curl_init(); // 设置url路径 curl_setopt($curl, CURLOPT_URL, $durl); // 将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回 curl_setopt($curl, CURLOPT_BINARYTRANSFER, true) ; // 添加头信息 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); // CURLINFO_HEADER_OUT选项可以拿到请求头信息 curl_setopt($curl, CURLINFO_HEADER_OUT, true); // 不验证SSL curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 执行 $data = curl_exec($curl); // 打印请求头信息 // echo curl_getinfo($curl, CURLINFO_HEADER_OUT); // 关闭连接 curl_close($curl); // 返回数据 return $data; }
- post请求
/* * php访问url路径,post请求 * * durl 路径url * post_data array() post参数数据 */ public function curl_file_post_contents($durl, $post_data){ // header传送格式 $headers = array( "token:1111111111111", "over_time:22222222222", ); //初始化 $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, $durl); //设置头文件的信息作为数据流输出 curl_setopt($curl, CURLOPT_HEADER, false); //设置获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //设置post方式提交 curl_setopt($curl, CURLOPT_POST, true); // 设置post请求参数 curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // 添加头信息 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); // CURLINFO_HEADER_OUT选项可以拿到请求头信息 curl_setopt($curl, CURLINFO_HEADER_OUT, true); // 不验证SSL curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); //执行命令 $data = curl_exec($curl); // 打印请求头信息 // echo curl_getinfo($curl, CURLINFO_HEADER_OUT); //关闭URL请求 curl_close($curl); //显示获得的数据 return $data; }
注:调用后可以通过json_decode来解析返回结果:如:
$data= $this->curl_file_post_contents($dataurl, $post_data);
$dataarr = json_decode($data, true);
补充:
使用post请求传递多维数组时报"Array to string conversion"错误
解决办法:
使用 http_build_query() 函数处理一下参数。
改为:
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post_data));