簡體   English   中英

PhoneGap Ionic項目無法在iOS設備上執行$ http.post

[英]PhoneGap Ionic project not performing $http.post on iOS device

我正在使用Ionic框架構建html5應用程序,然后使用PhoneGap將其部署到iOS設備。 一切工作正常,然后我們切換了一些用於獲取數據的服務器地址,以在該地址中包括端口號,然后將HTTP方法從GET切換為POST。 切換之后,我們在瀏覽器中進行了本地測試,它可以毫無問題地提取數據。 當我們部署到設備上時,執行請求時日志中什么也看不到,並且成功或錯誤處理程序從未到達過。 在下面的代碼中,僅打印“ HERE1”,並且一切停止。

console.log("HERE1");
$http.post("http://XX.XX.XX.XX:81/api/Authenticate", null ,{ headers: {'Authorization': 'Basic ' + encodedNamePw} })
            .success(function (data, status, headers, config) {
                console.log("HERE2");
            })
            .error(function (data) {
                console.log("HERE3");
            });

然后,我嘗試對相同的地址執行GET並得到響應,並說我顯然使用了錯誤的方法。 然后,我嘗試將POST發送到沒有端口的地址,並得到響應,這又是一個錯誤,但至少我得到了響應。 因此,總結一下,它可以在瀏覽器中本地運行,可以在帶有GET請求和PORT的iOS設備上運行,但是當我使用POST方法時,它不會發出任何請求。 我確實試圖逃脫結腸,但這沒有幫助。 我對此感到很困惑,所以任何想法都值得贊賞。 謝謝!

經過一番痛苦之后,我發現了問題和可用的選項。 問題是我們收到401響應和www-authenticate http標頭。 當服務器發送此消息時,iOS顯然嘗試彈出一個登錄對話框,該對話框被PhoneGap阻止。 它沒有使用錯誤回調方法,而是直接吃掉了它,並且您永遠不會收到請求已完成的任何反饋。

最好的解決方案要求您有權訪問正在呼叫的服務器。 如果這樣做,則可以更新響應以不為401響應發送www-authenticate標頭,那么您會很高興,並且可以按預期工作。 如果不能,則可以選擇將請求的異步選項設置為false。 這種方法將阻止UI,這不是理想的方法,但如果只是登錄請求,則可以接受。 祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM