function ali_getwuliu($no,$typename){ $typeArr = express_data(); $type = ''; if($typename){ $type = $typeArr[$typename]; } if(!$type || !$no) return []; $no = trim($no); $host = "https://wuliu.market.alicloudapi.com";//api访问链接 $path = "/kdi";//API访问后缀 $method = "GET"; $appcode = "609ee6436aaf444a8d17feebe6feb8f0";//替换成自己的阿里云appcode $headers = array(); array_push($headers, "Authorization:APPCODE " . $appcode); $querys = "no={$no}&type={$type}"; //参数写在这里 $bodys = ""; $url = $host . $path . "?" . $querys;//url拼接 $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, false); //curl_setopt($curl, CURLOPT_HEADER, true); 如不输出json, 请打开这行代码,打印调试头部状态码。 //状态码: 200 正常;400 URL无效;401 appCode错误; 403 次数用完; 500 API网管错误 if (1 == strpos("$".$host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } return curl_exec($curl); }
时间: 2023-05-20 18:02:11 浏览: 90
我看到你提供了一个 PHP 函数,它似乎是用于获取物流信息的。这个函数使用了阿里云的 API,需要提供一个运单号和快递公司名称作为参数。然后它会返回一个包含物流信息的数组。如果没有提供快递公司名称或者运单号,函数会返回一个空数组。
相关问题
template<typename T> struct has_get_data { template<typename U> static std::true_type f(decltype(&U::get_data)); template<typename U> static std::false_type f(...); typedef decltype(f<T>(0)) type; };
这是一个 C++ 模板结构体 `has_get_data` 的定义,用于检查某个类型是否具有 `get_data` 方法。和之前的定义相比,增加了一个模板参数 `typename T`,表示需要检查的类型。
同样,该结构体包含两个静态成员函数 `f`,一个是接受一个指向成员函数 `get_data` 的指针,一个是接受一个可变参数列表。不同的是,这里 `f` 函数的模板参数是 `typename U`,表示需要检查的类型,而不是之前的 `T`。
然后,结构体中定义了一个 `type` 类型,用于表示是否具有 `get_data` 方法。和之前的定义相同,如果某个类型 `T` 中包含成员函数 `get_data`,则调用 `f<decltype(&T::get_data)>(0)` 会返回 `std::true_type` 类型,否则调用 `f<T>(0)` 会返回 `std::false_type` 类型。
这种方式可以在编译期间检查某个特定类型是否具有某个方法,从而避免在运行时出现错误。由于是模板实现,可以适用于不同类型的检查。
struct has_get_data { template<typename U> static std::true_type f(decltype(&U::get_data)); template<typename U> static std::false_type f(...); typedef decltype(f<T>(0)) type; };
这是一个 C++ 模板结构体 `has_get_data` 的定义,用于检查某个类型是否具有 `get_data` 方法。该结构体包含两个静态成员函数 `f`,一个是接受一个指向成员函数 `get_data` 的指针,一个是接受一个可变参数列表。
具体来说,如果某个类型 `T` 中包含成员函数 `get_data`,则调用 `f<decltype(&T::get_data)>(0)` 会返回 `std::true_type` 类型,否则调用 `f<T>(0)` 会返回 `std::false_type` 类型。这里使用 `decltype` 关键字获取 `&T::get_data` 的类型。
最后,结构体中定义了一个 `type` 类型,用于表示是否具有 `get_data` 方法。如果 `type` 是 `std::true_type`,则表示该类型具有 `get_data` 方法,否则表示该类型不具有 `get_data` 方法。
这种方式可以在编译期间检查某个类型是否具有某个方法,从而避免在运行时出现错误。
阅读全文