get方法 ~~~php /** * get方法 * @param string $url 地址 * @return string 返回页面信息 */ function get_url($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); //设置访问的url地址 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//不输出内容 $result = curl_exec($ch); curl_close ($ch); return $result; } ~~~ post方法 ~~~ /** * post方法 * @param string $url 地址 * @param string $data 提交的数据 * @return string 返回结果 */ function post_url($url, $data) { $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); // 模拟用户使用的浏览器 //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 //curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包x curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制 防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $tmpInfo = curl_exec($curl); // 执行操作 if(curl_errno($curl)) { echo 'Errno'.curl_error($curl);//捕捉异常 } curl_close($curl); // 关闭CURL会话 return $tmpInfo; // 返回数据 } ~~~ 对象转化为数组 ~~~ /** * 对象转化为数组 * @param object $obj 对象 * @return array 数组 */ function object_to_array($obj){ $_arr = is_object($obj) ? get_object_vars($obj) :$obj; foreach ($_arr as $key=>$val){ $val = (is_array($val) || is_object($val)) ? object_to_array($val):$val; $arr[$key] = $val; } return $arr; } ~~~ 数组转xml ~~~ /** * 数组转xml * @param string $arr array * @return string XML */ function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) { if (is_numeric($val)) { $xml.="<".$key.">".$val."</".$key.">"; } else $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } $xml.="</xml>"; return $xml; } ~~~ 封装 ~~~ /** * 调用api接口 * @param url $apiurl api.muxiangdao.cn/Article/articleList 接口地址 * @param array $param ['status'=>'1','page'=>'2','pageshow'=>'10']; 参数(数组格式) * @param string $format eg:array(arr),object(obj),json;defalut = array 返回数据格式 * @param string $method get or post 请求方法 */ function get_api($apiurl, $param, $format = 'array', $method = 'get'){ if (is_array($param)) { $string = '?'; foreach ($param as $key => $val){ $string .= $key.'='.$val.'&'; } $param = substr($string, 0, -1); } $url = $apiurl.$param; switch (strtolower($method)){ case '':$json = get_url($url);break; case 'get':$json = get_url($url);break; case 'g':$json = get_url($url);break; case 'post':$json = post_url($apiurl,$param);break; case 'p':$json = post_url($apiurl,$param);break; default:$json = get_url($url);break; } $start = strpos($json, '{'); $end = -1*(strlen(strrchr($json, '}'))-1); if ($end) { $json = substr($json, $start, $end); }else { $json = substr($json, $start); } $obj = json_decode($json); $array = object_to_array($obj); $xml = arrayToXml($array); switch ($format){ case 'array':$data = $array;break; case 'arr':$data = $array;break; case 'obj':$data = $obj;break; case 'object':$data = $obj;break; case 'json':$data = $json;break; default:$data = $array; } return $data; } ~~~