示例:使用curl进行GET和POST请求的封装函数
```python import requests def curl_get(url, params=None): response = requests.get(url, params=params) return response.text def curl_post(url, data=None, json=None): response = requests.post(url, data=data, json=json) return response.text ```
get请求函数封装
functiongetUrl($url,$header=[]){$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_HTTPGET,true);if($header){curl_setopt($ch,CURLOPT_HTTPHEADER,$header);}curl_setopt($ch,CURLOPT_TIMEOUT,30);//设置超时时间:30scurl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//忽略ssl检测curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//1或TRUE将curl_exec()获取的信息以字符串返回,而不是直接输出。-curl_setopt($ch,CURLINFO_HEADER_OUT,true);//TRUE时追踪句柄的请求字符串,从PHP5.1.3开始可用。这个很关键,就是允许你查看请求header$output=curl_exec($ch);if(!$output){//echo"request$urlfail:",(array)curl_error($ch);//记录日志}curl_close($ch);//echo"request$urlsuccess:".json_encode(array($url,$header,$output),true);//记录日志return$output;}
del请求函数封装
functiondelUrl($url,$header=[]){$ch=curl_init();curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'DELETE');curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);//为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面curl_setopt($ch,CURLOPT_HTTPHEADER,$header);curl_setopt($ch,CURLOPT_TIMEOUT,30);//设置超时时间:30scurl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//忽略ssl检测curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//1或TRUE将curl_exec()获取的信息以字符串返回,而不是直接输出。-curl_setopt($ch,CURLINFO_HEADER_OUT,true);//TRUE时追踪句柄的请求字符串,从PHP5.1.3开始可用。这个很关键,就是允许你查看请求headercurl_setopt($ch,CURLOPT_URL,$url);$output=curl_exec($ch);if(!$output){//echo"request$urlfail:",(array)curl_error($ch);//记录日志}curl_close($ch);//echo"request$urlsuccess:".json_encode(array($url,$header,$output),true);//记录日志return$output;}
put请求函数封装
functionputUrl($url,$data=[],$header=[]){$ch=curl_init();if(!emptyempty($data)){curl_setopt($ch,CURLOPT_POSTFIELDS,$data);//定义提交的数据}curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'PUT');curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);//为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面curl_setopt($ch,CURLOPT_HTTPHEADER,$header);curl_setopt($ch,CURLOPT_TIMEOUT,30);//设置超时时间:30scurl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//忽略ssl检测curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//1或TRUE将curl_exec()获取的信息以字符串返回,而不是直接输出。-curl_setopt($ch,CURLINFO_HEADER_OUT,true);//TRUE时追踪句柄的请求字符串,从PHP5.1.3开始可用。这个很关键,就是允许你查看请求headercurl_setopt($ch,CURLOPT_URL,$url);$output=curl_exec($ch);if(!$output){//echo"request$urlfail:",(array)curl_error($ch);//记录日志}curl_close($ch);//echo"request$urlsuccess:".json_encode(array($url,$header,$output),true);//记录日志return$output;}
post请求函数封装
functionpostUrl($url,$data,$header=[]){$ch=curl_init();if(!emptyempty($data)){curl_setopt($ch,CURLOPT_POST,true);curl_setopt($ch,CURLOPT_POSTFIELDS,$data);}curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);//为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面curl_setopt($ch,CURLOPT_HTTPHEADER,$header);curl_setopt($ch,CURLOPT_TIMEOUT,30);//设置超时时间:30scurl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//忽略ssl检测curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//1或TRUE将curl_exec()获取的信息以字符串返回,而不是直接输出。-curl_setopt($ch,CURLINFO_HEADER_OUT,true);//TRUE时追踪句柄的请求字符串,从PHP5.1.3开始可用。这个很关键,就是允许你查看请求headercurl_setopt($ch,CURLOPT_URL,$url);$output=curl_exec($ch);if(!$output){//echo"request$urlfail:",(array)curl_error($ch);//记录日志}curl_close($ch);//echo"request$urlsuccess:".json_encode(array($url,$header,$output),true);//记录日志return$output;}
post JSON请求函数封装
functionpostJsonUrl($url,$data,$header=[]){$data=json_encode($data);$ch=curl_init();if(!emptyempty($data)){curl_setopt($ch,CURLOPT_POST,true);curl_setopt($ch,CURLOPT_POSTFIELDS,$data);}$header[]='Content-Type:application/json;charset=utf-8';curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);//为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面curl_setopt($ch,CURLOPT_HTTPHEADER,$header);curl_setopt($ch,CURLOPT_TIMEOUT,30);//设置超时时间:30scurl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//忽略ssl检测curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//1或TRUE将curl_exec()获取的信息以字符串返回,而不是直接输出。-curl_setopt($ch,CURLINFO_HEADER_OUT,true);//TRUE时追踪句柄的请求字符串,从PHP5.1.3开始可用。这个很关键,就是允许你查看请求headercurl_setopt($ch,CURLOPT_URL,$url);$output=curl_exec($ch);if(!$output){//echo"request$urlfail:",(array)curl_error($ch);//记录日志}curl_close($ch);//echo"request$urlsuccess:".json_encode(array($url,$header,$output),true);//记录日志return$output;}