2017-07-26 65 views
0

我正在试图制作一个简单的移动应用程序,使用流星将用户位置数据发送到地理空间数据库/服务器。我不确定我想要做什么实际上可能与流星有关,或者如果我做了不正确的事情。来自流星手机应用程序客户端的POST请求

没有Meteor服务器组件,只有客户端代码。首先,我需要使用POST请求从服务器获取令牌。这在测试代码时运行(流星运行android-device)。我可以看到令牌信息。但是,当我构建Android手机应用程序时,它不起作用。我尝试了多种方式来获取令牌(AJAX POST,Meteor Http和XMLHttpRequest),所有这些都在测试时起作用。

我已经通过流星和CORS文档和许多其他类似问题的帖子,但似乎无法找到解决办法。这是我第一次在这个领域工作,所以我不确定我是否缺少明显的东西,或者如果我在Meteor中不允许我做什么。

所以,

  1. 就是我想要流星手机应用程序不容许(应用程序无法使用流星服务器,这是一个非开始了我工作的地方)?

  2. 这是一个CORS问题我没有正确处理,即使我可以在测试时POST?

  3. 建立Android/iOS应用程序时,我需要做些什么吗?

  4. 问题是别的吗?

我真的不知道还有什么要看或如何进一步排除故障。

感谢您的帮助!

下面是POST请求的一些(消毒过的)代码片段,它们在测试它们是否有帮助时工作。

AJAX:

var getToken_ajax = function() { 
    var tokenData = { 
     username: "theusername", 
     password: "thepassword", 
     f: 'json', 
     expiration: 60, 
     client: 'referer', 
     referer: window.location.origin 
    }; 

    $.ajax({ 
     url: "https://<address>:<port>/arcgis/tokens/generateToken", 
     dataType: 'json', 
     type: 'POST', 
     data: tokenData, 
     crossDomain: true, 
     success: function(data, textStatus, jqXHR) { 
      // do something 
     }, 
     error: function(data, textStatus, jqXHR) { 
      // do something 
     } 
    }); 
}; 

的XMLHttpRequest:

var getToken_XMLHttpRequest = function() { 
    var tokenData = "username=theusername&password=thepassword&f=json&expiration=60&client=referer&referer=" + window.location.origin; 
    var xhr = new XMLHttpRequest(); 
    var url = 'https://<address>:<port>/arcgis/tokens/generateToken/'; 
    var xhrHistoryText; 
    var body = tokenData; 
    function doPost() { 
     if (xhr) { 
      xhr.open('POST', url, true); 
      xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8"); 
      xhr.setRequestHeader("Accept", "Accept:application/json, text/javascript, */*; q=0.01"); 
      xhr.onreadystatechange = stateChangeHandler; 
      xhr.send(body); 
     } 
     else { 
      // do something 
     } 
    } 
    function stateChangeHandler(evtXHR) { 
     // do something 
    } 
    doPost(); 
}; 
+0

浏览器引擎是否在任何地方记录了任何指示失败的错误?正常Web应用程序的CORS相关错误将记录到浏览器devtools控制台 – sideshowbarker

回答

0

原来有不到位的一个适当的证书。一旦到位,生产中的张贴按预期工作。

相关问题