本文整理汇总了PHP中HTTPRequest::send方法的典型用法代码示例。如果您正苦于以下问题:PHP HTTPRequest::send方法的具体用法?PHP HTTPRequest::send怎么用?PHP HTTPRequest::send使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HTTPRequest
的用法示例。
在下文中一共展示了HTTPRequest::send方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: retrieve_user_details
public function retrieve_user_details()
{
// Get the stream to the user page via the Snipt API
$request = new HTTPRequest(SNIPT_API . SNIPT_USER . SNIPT_FORMAT, HTTP_METH_GET);
echo "Connecting to Snipt API....\n";
$request->send();
if ($request->getResponseCode() == 200) {
$this->user_details = json_decode($request->getResponseBody());
echo "Snipt entries to retrieve : {$this->user_details->count}\n";
foreach ($this->user_details->snipts as $snipt) {
// Retrieve the snipt entry
$request = new HTTPRequest(SNIPT_API . SNIPT_SNIPT . $snipt . "." . SNIPT_FORMAT . SNIPT_STYLE);
$request->send();
if ($request->getResponseCode() == 200) {
$this->snipts[$snipt] = json_decode($request->getResponseBody());
} else {
echo "[ERROR] Could not retrieve the data for snipt entry {$snipt}\n";
}
}
return true;
} else {
echo "Invalid data received, exiting....\n";
return false;
}
}
示例2: _send_message
/**
* Sends the HTTP message [Request] to a remote server and processes
* the response.
*
* @param Request $request request to send
* @param Response $request response to send
* @return Response
*/
public function _send_message(Request $request, Response $response)
{
$http_method_mapping = array(HTTP_Request::GET => HTTPRequest::METH_GET, HTTP_Request::HEAD => HTTPRequest::METH_HEAD, HTTP_Request::POST => HTTPRequest::METH_POST, HTTP_Request::PUT => HTTPRequest::METH_PUT, HTTP_Request::DELETE => HTTPRequest::METH_DELETE, HTTP_Request::OPTIONS => HTTPRequest::METH_OPTIONS, HTTP_Request::TRACE => HTTPRequest::METH_TRACE, HTTP_Request::CONNECT => HTTPRequest::METH_CONNECT);
// Create an http request object
$http_request = new HTTPRequest($request->uri(), $http_method_mapping[$request->method()]);
if ($this->_options) {
// Set custom options
$http_request->setOptions($this->_options);
}
// Set headers
$http_request->setHeaders($request->headers()->getArrayCopy());
// Set cookies
$http_request->setCookies($request->cookie());
// Set query data (?foo=bar&bar=foo)
$http_request->setQueryData($request->query());
// Set the body
if ($request->method() == HTTP_Request::PUT) {
$http_request->addPutData($request->body());
} else {
$http_request->setBody($request->body());
}
try {
$http_request->send();
} catch (HTTPRequestException $e) {
throw new Request_Exception($e->getMessage());
} catch (HTTPMalformedHeaderException $e) {
throw new Request_Exception($e->getMessage());
} catch (HTTPEncodingException $e) {
throw new Request_Exception($e->getMessage());
}
// Build the response
$response->status($http_request->getResponseCode())->headers($http_request->getResponseHeader())->cookie($http_request->getResponseCookies())->body($http_request->getResponseBody());
return $response;
}
示例3: callApi
/**
* Call the API
*
* @param string $routeName The route name to call
* @param array $param The URL parameter to set
* @param array $data An associative array of the data to send in the request : 'params', 'body', 'files'
*
* @return mixed The API response body
*/
private function callApi($routeName, $param = array(), $data = array())
{
$route = self::$routes[$routeName];
$data = array_merge(array('params' => array(), 'body' => array(), 'files' => array()), $data);
$uri = $route['uri'];
foreach ($param as $key => $value) {
$uri = str_replace('{' . $key . '}', $value, $uri);
}
if (!empty($data['params'])) {
$uri .= '?' . http_build_query($data['params']);
}
$request = new HTTPRequest(array('url' => HAWK_SITE_URL . '/api' . $uri, 'headers' => array('X-Requested-With' => 'XMLHttpRequest'), 'method' => $route['method'], 'contentType' => 'json', 'dataType' => isset($route['dataType']) ? $route['dataType'] : 'json', 'body' => $data['body'], 'files' => $data['files']));
$request->send();
if ($request->getStatusCode() === 200) {
$result = $request->getResponse();
$contentType = $request->getResponseHeaders('Content-Type');
if ($contentType == 'application/octet-stream') {
$tmpName = TMP_DIR . uniqid() . '.zip';
file_put_contents($tmpName, base64_decode($result));
return $tmpName;
} else {
return $result;
}
} else {
throw new HawkApiException((string) $request->getResponse(), (int) $request->getStatusCode());
}
}
示例4: checkCronJob
function checkCronJob()
{
$context = Model_Context::getInstance();
/* Cron, only in single page request, not in a page dead link */
if (!empty($_SERVER['HTTP_REFERER']) || !dumbCronScheduler(true)) {
return;
}
$request = new HTTPRequest('GET', $context->getProperty('uri.default') . '/cron');
$request->timeout = 2;
$request->send();
}
示例5: leave
public static function leave($link)
{
return false;
$link = trim($link);
if (empty($link)) {
return false;
}
$request = new HTTPRequest('POST', TEXTCUBE_SYNC_URL);
$request->contentType = 'application/x-www-form-urlencoded; charset=utf-8';
return $request->send("mode=0&path=" . urlencode($link)) && checkResponseXML($request->responseText) === 0;
}
示例6: decode
public function decode($point = array('lat' => null, 'lng' => null))
{
$uri = 'http://apis.map.qq.com/ws/geocoder/v1?location=' . $point['lat'] . ',' . $point['lng'] . '&output=json&key=' . $this->conf['key'];
$http = new \HTTPRequest($uri, HTTP_METH_GET);
$http->send();
$code = $http->getResponseCode();
if ($code != 200) {
throw new Exception('http error', $code);
}
$r = json_decode($http->getResponseBody(), true);
if (!isset($r['result']['address'])) {
throw new Exception($r['message'], $r['status']);
}
return array('address' => $r['result']['address']);
}
示例7: call
function call()
{
if (func_num_args() < 1) {
return false;
}
$request = new HTTPRequest();
$request->method = 'POST';
$request->url = $this->url;
$request->contentType = 'text/xml';
$request->async = $this->async;
ob_start();
echo '<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>' . func_get_arg(0) . '</methodName><params>';
for ($i = 1; $i < func_num_args(); $i++) {
echo '<param>';
echo $this->_encodeValue(func_get_arg($i));
echo '</param>';
}
echo '</params></methodCall>';
$request->content = ob_get_contents();
ob_end_clean();
if (!$request->send()) {
return false;
}
if ($this->async) {
return true;
}
if (!is_null($request->getResponseHeader('Content-Type')) && $request->getResponseHeader('Content-Type') != 'text/xml') {
return false;
}
$xmls = new XMLStruct();
$request->responseText = preg_replace_callback('/&#([0-9a-fx]+);/mi', 'replace_num_entity', $request->responseText);
$xmls->open($request->responseText);
if ($xmls->error) {
return false;
}
if (isset($xmls->struct['methodResponse'][0]['fault'][0]['value'])) {
$this->fault = $this->_decodeValue($xmls->struct['methodResponse'][0]['fault'][0]['value'][0]);
} else {
if (isset($xmls->struct['methodResponse'][0]['params'][0]['param'][0]['value'])) {
$this->result = $this->_decodeValue($xmls->struct['methodResponse'][0]['params'][0]['param'][0]['value'][0]);
} else {
return false;
}
}
return true;
}
示例8: decode
public function decode($point = array('lat' => null, 'lng' => null))
{
$uri = 'http://maps.googleapis.com/maps/api/geocode/json?sensor=false&latlng=' . $point['lat'] . ',' . $point['lng'];
$http = new \HTTPRequest($uri, HTTP_METH_GET);
if (isset($this->conf['lang'])) {
$http->addHeaders(array('Accept-Language' => $this->conf['lang']));
}
$http->send();
$code = $http->getResponseCode();
if ($code != 200) {
throw new Exception('http error', $code);
}
$r = json_decode($http->getResponseBody(), true);
if (!isset($r['results'][0]['formatted_address'])) {
throw new Exception($r['status'], -1);
}
return array('address' => $r['results'][0]['formatted_address']);
}
示例9: GoogleBlogSearchPinging_ping
function GoogleBlogSearchPinging_ping($target)
{
/* TODO : do not send ping when private entry/post is added / modified */
static $lastPing = null;
$ctx = Model_Context::getInstance();
$pingUrl = 'http://blogsearch.google.com/ping';
$ping = $pingUrl . '?name=' . rawurlencode($ctx->getProperty('blog.title')) . '&url=' . rawurlencode($ctx->getProperty('uri.default') . "/");
if (!isset($lastPing) || $ping != $lastPing) {
if (ini_get('allow_url_fopen')) {
file_get_contents($ping);
} else {
$request = new HTTPRequest($ping);
$request->send();
}
$lastPing = $ping;
}
return $target;
}
示例10: uploadFile
/**
* 上传文件,要token认证
* @example shell curl -i -F 'file=@2.jpg' -F 'token=asdf' -F 'key=2.jpg' 'http://up.qiniu.com/'
* @example shell ./qrsync ./conf.json
* @return array array(
"httpUri" => "http://com-163-sinkcup-test.qiniudn.com/1.jpg",
"httpsUri" => "https://dn-com-163-sinkcup-test.qbox.me/1.jpg",
}
*/
public function uploadFile($localPath, $remoteFileName, $headers = array())
{
$remoteFileName = str_replace('/', '', $remoteFileName);
$uri = 'http://' . str_replace('//', '/', $this->conf['host']['up'] . '/');
//scope中指定文件,就可以覆盖。如果只写bucket,则重复上传会出现错误:614 文件已存在。
$policy = array('scope' => $this->bucket . ':' . $remoteFileName, 'deadline' => time() + 3600);
$pics = array('image/jpeg', 'image/webp', 'image/png');
//如果是图片,则需要返回分辨率
if (isset($headers['Content-Type']) && in_array($headers['Content-Type'], $pics)) {
$policy['returnBody'] = json_encode(array('width' => '$(imageInfo.width)', 'height' => '$(imageInfo.height)'));
}
$data = $this->encode(json_encode($policy));
$token = $this->sign($data) . ':' . $data;
//$hash = hash_file('crc32b', $localPath);
//$tmp = unpack('N', pack('H*', $hash));
$fields = array('token' => $token, 'key' => $remoteFileName);
$http = new \HTTPRequest($uri, HTTP_METH_POST);
$contentType = isset($headers['Content-Type']) ? $headers['Content-Type'] : 'multipart/form-data';
$http->addPostFile('file', $localPath, $contentType);
$http->addPostFields($fields);
//$http->setHeader($headers);
$http->send();
$body = json_decode($http->getResponseBody(), true);
$code = $http->getResponseCode();
if ($code == 200) {
//自定义域名一定是http,因为证书不能跨域名
if (!isset($this->conf['customDomain']) || empty($this->conf['customDomain'])) {
$httpUri = 'http://' . str_replace('//', '/', $this->bucket . $this->conf['httpUriSuffix'] . '/' . $remoteFileName);
} else {
$httpUri = 'http://' . $this->conf['customDomain'] . '/' . $remoteFileName;
}
$r = array('httpUri' => $httpUri, 'httpsUri' => 'https://' . str_replace('//', '/', $this->conf['httpsUriPrefix'] . $this->bucket . $this->conf['httpsUriSuffix'] . '/' . $remoteFileName));
if (isset($body['width'])) {
$r['width'] = $body['width'];
}
if (isset($body['height'])) {
$r['height'] = $body['height'];
}
return $r;
}
throw new Exception($body['error'], $code);
}
示例11: _http_execute
/**
* Execute the request using the PECL HTTP extension. (recommended)
*
* @param Request $request Request to execute
* @return Response
*/
protected function _http_execute(Request $request)
{
$http_method_mapping = array(HTTP_Request::GET => HTTPRequest::METH_GET, HTTP_Request::HEAD => HTTPRequest::METH_HEAD, HTTP_Request::POST => HTTPRequest::METH_POST, HTTP_Request::PUT => HTTPRequest::METH_PUT, HTTP_Request::DELETE => HTTPRequest::METH_DELETE, HTTP_Request::OPTIONS => HTTPRequest::METH_OPTIONS, HTTP_Request::TRACE => HTTPRequest::METH_TRACE, HTTP_Request::CONNECT => HTTPRequest::METH_CONNECT);
// Create an http request object
$http_request = new HTTPRequest($request->uri(), $http_method_mapping[$request->method()]);
// Set custom options
$http_request->setOptions($this->_options);
// Set headers
$http_request->setHeaders($request->headers()->getArrayCopy());
// Set cookies
$http_request->setCookies($request->cookie());
// Set body
$http_request->setBody($request->body());
try {
$http_request->send();
} catch (HTTPRequestException $e) {
throw new Kohana_Request_Exception($e->getMessage());
} catch (HTTPMalformedHeaderException $e) {
throw new Kohana_Request_Exception($e->getMessage());
} catch (HTTPEncodingException $e) {
throw new Kohana_Request_Exception($e->getMessage());
}
// Create the response
$response = $request->create_response();
// Build the response
$response->status($http_request->getResponseCode())->headers($http_request->getResponseHeader())->cookie($http_request->getResponseCookies())->body($http_request->getResponseBody());
return $response;
}
示例12: notifyComment
function notifyComment()
{
global $database, $service, $blog, $defaultURL;
$blogid = getBlogId();
$sql = "SELECT\n\t\t\t\tCN.*,\n\t\t\t\tCNQ.id AS queueId,\n\t\t\t\tCNQ.commentid AS commentid,\n\t\t\t\tCNQ.sendstatus AS sendstatus,\n\t\t\t\tCNQ.checkdate AS checkdate,\n\t\t\t\tCNQ.written AS queueWritten\n\t\t\tFROM\n\t\t\t\t{$database['prefix']}CommentsNotifiedQueue AS CNQ\n\t\t\tLEFT JOIN\n\t\t\t\t{$database['prefix']}Comments AS CN ON CNQ.commentid = CN.id\n\t\t\tWHERE\n\t\t\t\tCNQ.sendstatus = 0\n\t\t\t\tand CN.parent is not null\n\t\t\tORDER BY CNQ.id ASC LIMIT 1 OFFSET 0";
$queue = POD::queryRow($sql);
if (empty($queue) && empty($queue['queueId'])) {
return false;
}
$comments = POD::queryRow("SELECT * FROM {$database['prefix']}Comments WHERE blogid = {$blogid} AND id = {$queue['commentid']}");
if (empty($comments['parent']) || $comments['secret'] == 1) {
POD::execute("DELETE FROM {$database['prefix']}CommentsNotifiedQueue WHERE id={$queue['queueId']}");
return false;
}
$parentComments = POD::queryRow("SELECT * FROM {$database['prefix']}Comments WHERE blogid = {$blogid} AND id = {$comments['parent']}");
if (empty($parentComments['homepage'])) {
POD::execute("DELETE FROM {$database['prefix']}CommentsNotifiedQueue WHERE id={$queue['queueId']}");
return false;
}
$entry = POD::queryRow("SELECT * FROM {$database['prefix']}Entries WHERE blogid = {$blogid} AND id={$comments['entry']}");
if (is_null($entry)) {
$r1_comment_check_url = rawurlencode("{$defaultURL}/guestbook/" . $parentComments['id'] . "#guestbook" . $parentComments['id']);
$r2_comment_check_url = rawurlencode("{$defaultURL}/guestbook/" . $comments['id'] . "#guestbook" . $comments['id']);
$entry['title'] = _textf('%1 블로그의 방명록', $blog['title']);
$entryPermaLink = "{$defaultURL}/guestbook/";
$entry['id'] = 0;
} else {
$r1_comment_check_url = rawurlencode("{$defaultURL}/" . ($blog['useSloganOnPost'] ? "entry/{$entry['slogan']}" : $entry['id']) . "#comment" . $parentComments['id']);
$r2_comment_check_url = rawurlencode("{$defaultURL}/" . ($blog['useSloganOnPost'] ? "entry/{$entry['slogan']}" : $entry['id']) . "#comment" . $comments['id']);
$entryPermaLink = "{$defaultURL}/" . ($blog['useSloganOnPost'] ? "entry/{$entry['slogan']}" : $entry['id']);
}
$data = "url=" . rawurlencode($defaultURL) . "&mode=fb" . "&s_home_title=" . rawurlencode($blog['title']) . "&s_post_title=" . rawurlencode($entry['title']) . "&s_name=" . rawurlencode($comments['name']) . "&s_no=" . rawurlencode($comments['entry']) . "&s_url=" . rawurlencode($entryPermaLink) . "&r1_name=" . rawurlencode($parentComments['name']) . "&r1_no=" . rawurlencode($parentComments['id']) . "&r1_pno=" . rawurlencode($comments['entry']) . "&r1_rno=0" . "&r1_homepage=" . rawurlencode($parentComments['homepage']) . "&r1_regdate=" . rawurlencode($parentComments['written']) . "&r1_url=" . $r1_comment_check_url . "&r2_name=" . rawurlencode($comments['name']) . "&r2_no=" . rawurlencode($comments['id']) . "&r2_pno=" . rawurlencode($comments['entry']) . "&r2_rno=" . rawurlencode($comments['parent']) . "&r2_homepage=" . rawurlencode($comments['homepage']) . "&r2_regdate=" . rawurlencode($comments['written']) . "&r2_url=" . $r2_comment_check_url . "&r1_body=" . rawurlencode($parentComments['comment']) . "&r2_body=" . rawurlencode($comments['comment']);
if (strpos($parentComments['homepage'], "http://") === false) {
$homepage = 'http://' . $parentComments['homepage'];
} else {
$homepage = $parentComments['homepage'];
}
$request = new HTTPRequest('POST', $homepage);
$request->contentType = 'application/x-www-form-urlencoded; charset=utf-8';
$request->content = $data;
if ($request->send()) {
$xmls = new XMLStruct();
if ($xmls->open($request->responseText)) {
$result = $xmls->selectNode('/response/error/');
if ($result['.value'] != '1' && $result['.value'] != '0') {
$homepage = rtrim($homepage, '/') . '/index.php';
$request = new HTTPRequest('POST', $homepage);
$request->contentType = 'application/x-www-form-urlencoded; charset=utf-8';
$request->content = $data;
if ($request->send()) {
}
}
}
} else {
}
POD::execute("DELETE FROM {$database['prefix']}CommentsNotifiedQueue WHERE id={$queue['queueId']}");
}
示例13: importOPMLFromURL
function importOPMLFromURL($blogid, $url)
{
global $database, $service;
$request = new HTTPRequest($url);
if (!$request->send()) {
return array('error' => 1);
}
$result = importOPMLFromFile($blogid, $request->responseText);
if ($result[0] == 0) {
return array('error' => 0, 'total' => $result[1]['total'], 'success' => $result[1]['success']);
} else {
return array('error' => $result[0] + 1);
}
}
示例14: notifyComment
function notifyComment()
{
$blogid = getBlogId();
$context = Model_Context::getInstance();
$pool = DBModel::getInstance();
$pool->init("CommentsNotifiedQueue");
$pool->setAlias("CommentsNotifiedQueue", "CNQ");
$pool->setAlias("Comments", "CN");
$pool->join("Comments", "left", array(array("CNQ.commentid", "eq", "CN.id")));
$pool->setQualifier("CNQ.sendstatus", "eq", 0);
$pool->setQualifier("CN.parent", "neq", null);
$pool->setOrder("CNQ.id", "asc");
$pool->setLimit(1);
$queue = $pool->getRow("CN.*,\n\t\t\t\tCNQ.id AS queueId,\n\t\t\t\tCNQ.commentid AS commentid,\n\t\t\t\tCNQ.sendstatus AS sendstatus,\n\t\t\t\tCNQ.checkdate AS checkdate,\n\t\t\t\tCNQ.written AS queueWritten");
if (empty($queue) && empty($queue['queueId'])) {
return false;
}
$pool->init("Comments");
$pool->setQualifier("blogid", "eq", $blogid);
$pool->setQualifier("id", "eq", $queue['commentid']);
$comments = $pool->getRow();
if (empty($comments['parent']) || $comments['secret'] == 1) {
$pool->init("CommentsNotifiedQueue");
$pool->setQualifier("id", "eq", $queue['queueId']);
$pool->delete();
return false;
}
$pool->init("Comments");
$pool->setQualifier("blogid", "eq", $blogid);
$pool->setQualifier("id", "eq", $queue['parent']);
$parentComments = $pool->getRow();
if (empty($parentComments['homepage'])) {
$pool->init("CommentsNotifiedQueue");
$pool->setQualifier("id", "eq", $queue['queueId']);
$pool->delete();
return false;
}
$pool->init("Entries");
$pool->setQualifier("blogid", "eq", $blogid);
$pool->setQualifier("id", "eq", $comments['entry']);
$entry = $pool->getRow();
if (is_null($entry)) {
$r1_comment_check_url = rawurlencode($context->getProperty('uri.default') . "/guestbook/" . $parentComments['id'] . "#guestbook" . $parentComments['id']);
$r2_comment_check_url = rawurlencode($context->getProperty('uri.default') . "/guestbook/" . $comments['id'] . "#guestbook" . $comments['id']);
$entry['title'] = _textf('%1 블로그의 방명록', $context->getProperty('blog.title'));
$entryPermaLink = $context->getProperty('uri.default') . "/guestbook/";
$entry['id'] = 0;
} else {
$r1_comment_check_url = rawurlencode($context->getProperty('uri.default') . "/" . ($context->getProperty('blog.useSloganOnPost') ? "entry/{$entry['slogan']}" : $entry['id']) . "#comment" . $parentComments['id']);
$r2_comment_check_url = rawurlencode($context->getProperty('uri.default') . "/" . ($context->getProperty('blog.useSloganOnPost') ? "entry/{$entry['slogan']}" : $entry['id']) . "#comment" . $comments['id']);
$entryPermaLink = $context->getProperty('uri.default') . "/" . ($context->getProperty('blog.useSloganOnPost') ? "entry/{$entry['slogan']}" : $entry['id']);
}
$data = "url=" . rawurlencode($context->getProperty('uri.default')) . "&mode=fb" . "&s_home_title=" . rawurlencode($context->getProperty('blog.title')) . "&s_post_title=" . rawurlencode($entry['title']) . "&s_name=" . rawurlencode($comments['name']) . "&s_no=" . rawurlencode($comments['entry']) . "&s_url=" . rawurlencode($entryPermaLink) . "&r1_name=" . rawurlencode($parentComments['name']) . "&r1_no=" . rawurlencode($parentComments['id']) . "&r1_pno=" . rawurlencode($comments['entry']) . "&r1_rno=0" . "&r1_homepage=" . rawurlencode($parentComments['homepage']) . "&r1_regdate=" . rawurlencode($parentComments['written']) . "&r1_url=" . $r1_comment_check_url . "&r2_name=" . rawurlencode($comments['name']) . "&r2_no=" . rawurlencode($comments['id']) . "&r2_pno=" . rawurlencode($comments['entry']) . "&r2_rno=" . rawurlencode($comments['parent']) . "&r2_homepage=" . rawurlencode($comments['homepage']) . "&r2_regdate=" . rawurlencode($comments['written']) . "&r2_url=" . $r2_comment_check_url . "&r1_body=" . rawurlencode($parentComments['comment']) . "&r2_body=" . rawurlencode($comments['comment']);
if (strpos($parentComments['homepage'], "http://") === false) {
$homepage = 'http://' . $parentComments['homepage'];
} else {
$homepage = $parentComments['homepage'];
}
$request = new HTTPRequest('POST', $homepage);
$request->contentType = 'application/x-www-form-urlencoded; charset=utf-8';
$request->content = $data;
if ($request->send()) {
$xmls = new XMLStruct();
if ($xmls->open($request->responseText)) {
$result = $xmls->selectNode('/response/error/');
if ($result['.value'] != '1' && $result['.value'] != '0') {
$homepage = rtrim($homepage, '/') . '/index.php';
$request = new HTTPRequest('POST', $homepage);
$request->contentType = 'application/x-www-form-urlencoded; charset=utf-8';
$request->content = $data;
if ($request->send()) {
}
}
}
}
$pool->init("CommentsNotifiedQueue");
$pool->setQualifier("id", "eq", $queue['queueId']);
$pool->delete();
}
示例15: send
/**
* 发送notification或message。请阅读友盟文档。
*/
public function send($data)
{
$token = $this->grantToken();
$newData = $data;
foreach ($token as $k => $v) {
$newData[$k] = $v;
}
//必填 消息发送类型,其值为unicast,listcast,broadcast,groupcast或customizedcast
if (!isset($data['type'])) {
throw new Exception('need param: type');
}
// 可选 当type=customizedcast时,开发者填写自己的alias,友盟根据alias进行反查找,得到对应的device_token。多个alias时用英文逗号分,不能超过50个。
if (isset($data['alias']) && !empty($data['alias'])) {
if (is_array($data['alias'])) {
$newData['alias'] = implode(',', $data['alias']);
} else {
$newData['alias'] = $data['alias'];
}
}
// 必填 消息类型,值为notification或者message
if (!isset($data['payload']['display_type'])) {
$newData['payload']['display_type'] = 'notification';
}
// 必填 通知栏提示文字。但实际没有用,todo确认
if (!isset($data['payload']['body']['ticker'])) {
$newData['payload']['body']['ticker'] = $data['payload']['body']['title'];
}
//可选 消息描述。用于友盟推送web管理后台,便于查看。
if (!isset($data['description'])) {
$newData['description'] = $data['payload']['body']['title'];
}
$defaultTrueParams = array('play_vibrate', 'play_lights', 'play_sound');
foreach ($defaultTrueParams as $one) {
if (isset($data['payload']['body'][$one]) && ($data['payload']['body'][$one] == false || $data['payload']['body'][$one] == 'false')) {
$newData['payload']['body'][$one] = 'false';
}
}
$http = new \HTTPRequest($this->conf['api_uri_prefix'] . 'api/send', HTTP_METH_POST);
$http->setBody(json_encode($newData));
$http->send();
$body = $http->getResponseBody();
if ($http->getResponseCode() != 200) {
throw new Exception($body);
}
$tmp = json_decode($body, true);
if (!isset($tmp['ret']) || $tmp['ret'] != 'SUCCESS') {
throw new Exception($body);
}
return true;
}