curl_exec 使用谷歌云消息返回 null
Posted
技术标签:
【中文标题】curl_exec 使用谷歌云消息返回 null【英文标题】:curl_exec return null with google cloud messaging 【发布时间】:2014-04-12 15:12:34 【问题描述】:function sendMessageToPhone($collapseKey, $messageText, $username)
include_once 'users.php';
$user = new users();
$data = $user->getUser($username);
$apiKey = 'MY_API_KEY';
$userIdentificador = $data["gcmcode"];
$headers = array('Content-Type: application/json',
'Authorization:key=' . $apiKey);
$info = array('message' => $messageText);
$data = array(
'registration_ids' => $userIdentificador,
'collapse_key' => $collapseKey,
'data' => $info);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $response; //Return null???
行:
$responde = curl_exec($ch);
返回空值。为什么?在我的 Android 代码中:
JSONObject jdata = PostServer.getserverdata(nameValuePairs, Server.getIPServer());
jdata
为 null 且不发送消息。不知道是什么问题。
【问题讨论】:
【参考方案1】:很难判断出了什么问题,你至少应该从curl
执行中抛出错误:
$response= curl_exec($ch);
if ($response=== FALSE)
die('error curl: ' . curl_error($ch));
那么返回http代码本身并找出它的值会更有意义:
return $httpCode;
【讨论】:
以上是关于curl_exec 使用谷歌云消息返回 null的主要内容,如果未能解决你的问题,请参考以下文章