帖子
帖子
用户
博客
课程
显示全部楼层
10
帖子
0
勋章
844
Y币

[云开发] 推送云 API调用错误

[复制链接]
发表于 2015-7-31 11:52:39
  1. var now = Date.now();
  2.         var appKey =hex_sha1("0000000001"+"UZ"+ "00001-00001-00001-00001-00001KJKJDLSKK"+"UZ"+now)+"."+now;
  3.         var  postdata={
  4.             title:"用户消息",
  5.             content:"你妈叫你回家吃饭!!!",
  6.             type:1,
  7.             platform:0
  8.         }
  9.         $.ajax({
  10.             type: "POST",
  11.             url:"https://p.apicloud.com/api/push/message",
  12.             data:postdata,
  13.             dataType:"json",
  14.             error: function(XHR,textStatus,errorThrown) {
  15.                 alert ("XHR="+JSON.stringify(XHR)+"\ntextStatus="+textStatus+"\nerrorThrown=" + errorThrown);
  16.             },
  17.             success: function(data,textStatus) {
  18.                 alert(data);
  19.             },
  20.             headers: {
  21.                 "X-APICloud-AppId":"0000000001",
  22.                 "X-APICloud-AppKey":"<span style="line-height: 1.5;">00001-00001-00001-00001-00001KJKJDLSKK</span><span style="line-height: 1.5;">"</span>
复制代码
==================================================(以上AppId 和AppKey 并非测试真实ID 和Key)

以上请求发生错误,返回结果为:
XHR={"statusText":"","status":0,"responseURL":"","response":"","responseType":"","responseXML":null,"responseText":"","upload":{"ontimeout":null,"onprogress":null,"onloadstart":null,"onloadend":null,"onload":null,"onerror":null,"onabort":null},"withCredentials":false,"readyState":4,"timeout":0,"ontimeout":null,"onprogress":null,"onloadstart":null,"onloadend":null,"onload":null,"onerror":null,"onabort":null}
textStatus=abort
errorThrown=null






返回错误信息

返回错误信息
5
帖子
0
勋章
1万+
Y币
X-APICloud-AppKey应该传appKey
10
帖子
0
勋章
844
Y币
技术支持-M 发表于 2015-7-31 12:00
X-APICloud-AppKey应该传appKey

好的,我试试
10
帖子
0
勋章
844
Y币
本帖最后由 markeluo 于 2015-7-31 17:00 编辑
  1. var now = Date.now();
  2.         var appKey =hex_sha1("0000001"+"UZ"+ "00001-FAA6-9D49-EF70-0088999ERT"+"UZ"+now)+"."+now;
  3.         var  postdata={
  4.             title:"用户消息",
  5.             content:"你妈叫你回家吃饭!!!",
  6.             type:1,
  7.             platform:0
  8.         }
  9.         $.ajax({
  10.             type: "POST",
  11.             url:"https://p.apicloud.com/api/push/message",
  12.             data:postdata,
  13.             dataType:"jsonp",
  14.             error: function(XHR,textStatus,errorThrown) {
  15.                 console.log("XHR="+JSON.stringify(XHR)+"\ntextStatus="+textStatus+"\nerrorThrown=" + errorThrown);
  16.             },
  17.             success: function(data,textStatus) {
  18.                 alert(data);
  19.             },
  20.             headers: {
  21.                 "X-APICloud-AppId":"0000001",
  22.                 "X-APICloud-AppKey":appKey
  23.             }
  24.         });
复制代码
10
帖子
0
勋章
844
Y币
本帖最后由 markeluo 于 2015-7-31 17:01 编辑
技术支持-M 发表于 2015-7-31 12:00
X-APICloud-AppKey应该传appKey

var now = Date.now();
        var appKey =hex_sha1("0000001"+"UZ"+ "4GKK089-FAA6-9D49-EF70-07899RUJK1KK"+"UZ"+now)+"."+now;
        var  postdata={
            title:"用户消息",
            content:"你妈叫你回家吃饭!!!",
            type:1,
            platform:0
        }
        $.ajax({
            type: "POST",
            url:"https://p.apicloud.com/api/push/message",
            data:postdata,
            dataType:"jsonp",
            error: function(XHR,textStatus,errorThrown) {
                console.log("XHR="+JSON.stringify(XHR)+"\ntextStatus="+textStatus+"\nerrorThrown=" + errorThrown);
            },
            success: function(data,textStatus) {
                alert(data);
            },
            headers: {
                "X-APICloud-AppId":"0000001",
                "X-APICloud-AppKey":appKey
            }
        });
10
帖子
0
勋章
844
Y币
技术支持-M 发表于 2015-7-31 12:00
X-APICloud-AppKey应该传appKey

好像是提示跨域了
XMLHttpRequest cannot load https://p.apicloud.com/api/push/message. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access.
10
帖子
0
勋章
844
Y币
技术支持-M 发表于 2015-7-31 12:00
X-APICloud-AppKey应该传appKey

对于跨域的问题,有好的解决方案吗?
10
帖子
0
勋章
844
Y币
本帖最后由 markeluo 于 2015-7-31 17:42 编辑

由于存在跨域问题,另外由于推送可能需要放在Server 端进行,所以后面采用在node.js 端调用推送云API
具体代码如下:
  1. //1.创建http请求对象
  2.                 var http = require('https');

  3.                 //2.组织推送云API所需的参数
  4.                 var temp_data = JSON.stringify({
  5.                     "title":title,
  6.                     "content":content,
  7.                     "type":"1",////– 消息类型,1:消息 2:通知
  8.                     //timer:'', – 定时消息发送时间。定时不为空则为定时消息,毫秒数。可选参数
  9.                     "platform":"0", //:0全部平台,1:ios, 2:android
  10.                     "groupName":"", //- 推送组名,多个组用英文逗号隔开.默认:全部组。eg.group1,group2 .
  11.                     "userIds":"" //- 推送
  12.                 });

  13.                 //3.根据app id和app key 创建appKey
  14.                 var now = Date.now();
  15.                 var appKey =DES.SHA1("A000000001"+"UZ"+ "1F732232-FAA6-9D49-EF70-80899012A22"+"UZ"+now)+"."+now;

  16.                 //4.组织htttp reques 请求的参数
  17.                 var options = {
  18.                     host: 'p.apicloud.com',//主机地址
  19.                     //port: 80,
  20.                     path: '/api/push/message',//服务相对目录
  21.                     method: 'POST',//请求方式
  22.                     headers:{
  23.                         "X-APICloud-AppId":"A000000001",
  24.                         "X-APICloud-AppKey":appKey,
  25.                         "Content-Type":"application/json;charset=utf-8"//请求数据类型,如果不设置此项,会出现 "message title invalid"的错误
  26.                     }
  27.                 };

  28.                 var req = http.request(options, function(res) {
  29.                     res.setEncoding('utf8');//设置处处格式
  30.                     res.on('data', function (chunk) {
  31.                         console.log(chunk);
  32.                     });
  33.                 });
  34.                 req.write(temp_data);
  35.                 req.end();
复制代码
5
帖子
0
勋章
1万+
Y币
markeluo 发表于 2015-7-31 17:29
由于存在跨域问题,另外由于推送可能需要放在Server 端进行,所以后面采用在node.js 端调用推送云API
具体 ...

您需要登录后才可以回帖 登录

本版积分规则