| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- <?php
- use HttpQueue;
- use LewaimaiRequestApi;
- use Yii;
- class LewaimaiHttp
- {
- //POST请求
- //参数1是请求的url
- //参数2是发送的数据的数组
- //参数3是其他POST选项
- public static function POST($url, array $post = array(), array $options = array())
- {
- $defaults = array(
- CURLOPT_POST => 1,
- CURLOPT_HEADER => 0,
- CURLOPT_URL => $url,
- CURLOPT_FRESH_CONNECT => 1,
- CURLOPT_RETURNTRANSFER => 1,
- CURLOPT_FORBID_REUSE => 1,
- CURLOPT_TIMEOUT => 30,
- CURLOPT_POSTFIELDS => http_build_query($post),
- CURLOPT_SSLVERSION => 1,
- CURLOPT_SSL_VERIFYPEER => 0,
- CURLOPT_SSL_VERIFYHOST => 2,
- );
- $ch = curl_init();
- curl_setopt_array($ch, ($options + $defaults));
- $result = curl_exec($ch);
- if ($result === false) {
- Yii::log("POST ERROR:".curl_error($ch));
- }
- curl_close($ch);
- return $result;
- }
- //GET请求
- //参数1是请求的url
- //参数2是发送的数据的数组
- //参数3是其他GET选项
- public static function GET($url, array $get = array(), array $options = array())
- {
- $defaults = array(
- CURLOPT_URL => $url.(strpos($url, '?') === false ? '?' : '').http_build_query($get),
- CURLOPT_HEADER => 0,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_TIMEOUT => 4,
- CURLOPT_SSLVERSION => 1,
- CURLOPT_SSL_VERIFYPEER => 0,
- CURLOPT_SSL_VERIFYHOST => 2,
- );
- $ch = curl_init();
- curl_setopt_array($ch, ($options + $defaults));
- $result = curl_exec($ch);
- if ($result === false) {
- Yii::log("GET ERROR:".curl_error($ch));
- }
- curl_close($ch);
- return $result;
- }
- public static function LESHUA_GET($url, array $get = array(), array $options = array())
- {
- $defaults = array(
- CURLOPT_URL => $url.(strpos($url, '?') === false ? '?' : '').http_build_query($get),
- CURLOPT_HEADER => false,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_TIMEOUT => 10,
- CURLOPT_SSLVERSION => 1,
- CURLOPT_VERBOSE => 1,
- CURLOPT_SSL_VERIFYPEER => false,
- CURLOPT_SSL_VERIFYHOST => false,
- CURLOPT_CAINFO => getcwd().'/protected/files/leshua/yeahka_ca.crt',
- CURLOPT_SSLCERT => getcwd().'/protected/files/leshua/leshua_apiclient_cert.pem',
- CURLOPT_SSLCERTPASSWD => 'lewaimai@yeahka.com',
- CURLOPT_SSLCERTTYPE => 'PEM',
- CURLOPT_SSLKEY => getcwd().'/protected/files/leshua/leshua_apiclient_key.pem',
- CURLOPT_SSLKEYPASSWD => 'lewaimai@yeahka.com',
- CURLOPT_SSLKEYTYPE => 'PEM',
- );
- $ch = curl_init();
- curl_setopt_array($ch, ($options + $defaults));
- $result = curl_exec($ch);
- if ($result === false) {
- Yii::log("GET ERROR:".curl_error($ch));
- }
- curl_close($ch);
- return $result;
- }
- //异步POST
- public static function POST_ASYNC($url, array $post = array(), array $options = array())
- {
- /*
- $defaults = array(
- CURLOPT_POST => 1,
- CURLOPT_HEADER => 0,
- CURLOPT_URL => $url,
- CURLOPT_FRESH_CONNECT => 1,
- CURLOPT_RETURNTRANSFER => 1,
- CURLOPT_FORBID_REUSE => 1,
- CURLOPT_TIMEOUT => 4,
- CURLOPT_POSTFIELDS => http_build_query($post),
- CURLOPT_SSLVERSION => 1,
- CURLOPT_SSL_VERIFYPEER => 0,
- CURLOPT_SSL_VERIFYHOST => 2
- );
- $ch = curl_init();
- curl_setopt_array($ch, ($options + $defaults));
- $result = curl_exec($ch);
- if ($result === false)
- {
- Yii::log("POST ERROR:" . curl_error($ch));
- }
- curl_close($ch);
- return $result;
- */
- $argument = json_encode($post);
- $optionsargument = json_encode($options);
- $model = new HttpQueue();
- $model->url = $url;
- $model->argument = $argument;
- $model->optionsargument = $optionsargument;
- $model->type = 0;
- $model->last_time = date('Y-m-d H:i:s');
- $result = $model->save();
- return $result;
- }
- //异步GET
- public static function GET_ASYNC($url, array $get = array(), array $options = array())
- {
- /*
- $defaults = array(
- CURLOPT_URL => $url . (strpos($url, '?') === FALSE ? '?' : '') . http_build_query($get),
- CURLOPT_HEADER => 0,
- CURLOPT_RETURNTRANSFER => TRUE,
- CURLOPT_TIMEOUT => 4,
- CURLOPT_SSLVERSION => 1,
- CURLOPT_SSL_VERIFYPEER => 0,
- CURLOPT_SSL_VERIFYHOST => 2
- );
- $ch = curl_init();
- curl_setopt_array($ch, ($options + $defaults));
- $result = curl_exec($ch);
- if ($result === false)
- {
- Yii::log("GET ERROR:" . curl_error($ch));
- }
- curl_close($ch);
- return $result;
- */
- $argument = json_encode($get);
- $optionsargument = json_encode($options);
- $model = new HttpQueue();
- $model->url = $url;
- $model->argument = $argument;
- $model->optionsargument = $optionsargument;
- $model->type = 1;
- $model->last_time = date('Y-m-d H:i:s');
- $result = $model->save();
- return $result;
- }
- public static function POSTJSON($url, $json)
- {
- return self::POST($url, array(), array(CURLOPT_POSTFIELDS => $json));
- }
- //发送短信
- public static function SendSMSMessage($phone, $content)
- {
- $content = str_replace('【', '(', $content);
- $content = str_replace('】', ')', $content);
- $content = $content."【乐外卖】";
- $content = iconv("utf-8", "gb2312//TRANSLIT//IGNORE", $content);
- $flag = 0;
- //要post的数据
- $argv = array(
- 'sn' => 'SDK-JMR-010-00033', ////替换成您自己的序列号
- 'pwd' => strtoupper(md5('SDK-JMR-010-00033'.'893025')), //此处密码需要加密 加密方式为 md5(sn+password) 32位大写
- 'mobile' => $phone,//手机号 多个用英文的逗号隔开 post理论没有长度限制.推荐群发一次小于等于10000个手机号
- 'content' => $content,//短信内容
- 'ext' => '',
- 'stime' => '',//定时时间 格式为2011-6-29 11:09:21
- 'rrid' => '',
- );
- //构造要post的字符串
- $params = "";
- foreach ($argv as $key => $value) {
- if ($flag != 0) {
- $params .= "&";
- $flag = 1;
- }
- $params .= $key."=";
- $params .= urlencode($value);
- $flag = 1;
- }
- $length = strlen($params);
- //创建socket连接
- $fp = fsockopen("sdk2.entinfo.cn", 8060, $errno, $errstr, 10) or exit($errstr."--->".$errno);
- //构造post请求的头
- $header = "POST /webservice.asmx/mt HTTP/1.1\r\n";
- $header .= "Host:sdk2.entinfo.cn\r\n";
- $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $header .= "Content-Length: ".$length."\r\n";
- $header .= "Connection: Close\r\n\r\n";
- //添加post的字符串
- $header .= $params."\r\n";
- //发送post的数据
- fputs($fp, $header);
- $inheader = 1;
- while (!feof($fp)) {
- $line = fgets($fp, 1024); //去除请求包的头只显示页面的返回数据
- if ($inheader && ($line == "\n" || $line == "\r\n")) {
- $inheader = 0;
- }
- if ($inheader == 0) {
- // echo $line;
- }
- }
- //<string xmlns="http://tempuri.org/">-5</string>
- $line = str_replace("<string xmlns=\"http://tempuri.org/\">", "", $line);
- $line = str_replace("</string>", "", $line);
- $result = explode("-", $line);
- // echo $line."-------------";
- if (count($result) > 1) {
- Yii::log(
- '发送短信失败,手机号码:'.$phone.' 发送内容:'.$content."\n返回值为:".$line.',请查看webservice返回值对照表'
- );
- return false;
- } else {
- //Yii::log('发送成功 返回值为:'.$line);
- return true;
- }
- }
- /*
- * 发送模板短信
- */
- public static function SendTemplateSMS($phone, $content, $tid = 0)
- {
- $paramArray = array();
- $paramArray["phone"] = $phone;
- $paramArray["content"] = $content;
- $paramArray["tid"] = $tid;
- $retArray = LewaimaiRequestApi::SendCommon("/sms/sendtpsms", $paramArray);
- if (!$retArray) {
- return "网络或服务器错误";
- }
- if ($retArray["errcode"] == 0) {
- return true;
- } else {
- return $retArray["errmsg"];
- }
- }
- }
|