我正在试图制作一个简单的移动应用程序,使用流星将用户位置数据发送到地理空间数据库/服务器。我不确定我想要做什么实际上可能与流星有关,或者如果我做了不正确的事情。来自流星手机应用程序客户端的POST请求
没有Meteor服务器组件,只有客户端代码。首先,我需要使用POST请求从服务器获取令牌。这在测试代码时运行(流星运行android-device)。我可以看到令牌信息。但是,当我构建Android手机应用程序时,它不起作用。我尝试了多种方式来获取令牌(AJAX POST,Meteor Http和XMLHttpRequest),所有这些都在测试时起作用。
我已经通过流星和CORS文档和许多其他类似问题的帖子,但似乎无法找到解决办法。这是我第一次在这个领域工作,所以我不确定我是否缺少明显的东西,或者如果我在Meteor中不允许我做什么。
所以,
就是我想要流星手机应用程序不容许(应用程序无法使用流星服务器,这是一个非开始了我工作的地方)?
这是一个CORS问题我没有正确处理,即使我可以在测试时POST?
建立Android/iOS应用程序时,我需要做些什么吗?
问题是别的吗?
我真的不知道还有什么要看或如何进一步排除故障。
感谢您的帮助!
下面是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();
};
浏览器引擎是否在任何地方记录了任何指示失败的错误?正常Web应用程序的CORS相关错误将记录到浏览器devtools控制台 – sideshowbarker