我正在尝试使用以下代码使用自己的API发送推送通知。我确信我的服务器启用了curl。我在下面作为回应。
$url = "http://efpushtest.meteor.com/api/push";
# Our new data
$data = json_encode(array(
'message' => "this is venkat test push message",
'device' => "12345"
));
$ch = curl_init($url);
# Setting our options
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
# Get the response
$result = curl_exec($ch);
curl_close($ch);
回应:
{"成功":false,"消息":"意想不到的令牌"}
我没有得到这个代码的错误。
答案 0 :(得分:0)
由于您在评论中说它期望发布参数,因此您的请求不应该像代码中那样进行json编码。处理这种情况的正确方法是发布字段,如下:
$url = "http://efpushtest.meteor.com/api/push";
# Our new data
$data = array(
'message' => "this is venkat test push message",
'device' => "12345"
);
$ch = curl_init($url);
// build the post string here
foreach($data as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, '&');
# Setting our options
curl_setopt($ch, CURLOPT_POST, count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
# Get the response
$result = curl_exec($ch);
curl_close($ch);
您实际上将参数作为POST
参数发布,并以GET
中的形式在字符串中传递它们。您的示例将发布:
message =这是venkat测试推送消息& device = 12345
如果我是你,我还会更新数组声明,以便将url_encoded
值传递给帖子,如下所示:
$data = array(
'message' => urlencode("this is venkat test push message"),
'device' => urlencode("12345")
);
防止字符串中的任何特殊字符破坏您的请求
JSON的旧答案
<德尔> 尝试设置curl请求的标题以指定您向api发布`json` #设置我们的选项 curl_setopt($ ch,CURLOPT_HTTPHEADER,array(&#39; Content-Type:application / json&#39;)); curl_setopt($ ch,CURLOPT_POSTFIELDS,$ data); curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true); 德尔>答案 1 :(得分:0)
因为我在浏览器控制台中得到相同的响应:
$.post( "/api/push/", { "message" : "this is venkat test push message","device" : "12345" } );
我会说问题在你的api代码中
这里的答案似乎也是这样说的: