我正在試圖製作一個簡單的移動應用程序,使用流星將用戶位置數據發送到地理空間數據庫/服務器。我不確定我想要做什麼實際上可能與流星有關,或者如果我做了不正確的事情。來自流星手機應用程序客戶端的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