2012-06-21 59 views
1

首先,我想感謝所有在這裏stackoverflow的專家,通過閱讀問題,看例子代碼和閱讀我已經能夠得到這個答案點。再一次感謝你!我幾乎在那裏... PhoneGap Android連接到WCF服務

我一直在花費數小時尋找解決方案,我已閱讀了關於此問題的許多帖子。看起來這是一個問題,很多其他人一直在努力。如果有人能夠幫助解決這個令人沮喪的問題,我將不勝感激。

我所有的開發都在我的本地機器上完成。 (Win 7的,Visual Studio的11beta)

WCF服務在IIS快遞託管自己的端口或IIS 7.5(.NET Framework 4.0中)

第二web應用只用HTML5/jQuery的在IIS快遞託管在不同的端口上。

也在我的本地機器上使用Eclipse 3.7.2和Android SDK 17。 它似乎所有的軟件運行正常。 Android模擬器工作,安裝的PhoneGap /科爾多瓦圖書館等 我使用的是Android 4.0.3與1.6.0科爾多瓦

我要求援助,以找出爲什麼我的PhoneGap模擬器Ajax調用不會通過到我的WCF REST服務。現在我沒有一個真正的Android設備來測試程序,因此我必須使用模擬器。

一些細節:

我有一個WCF REST服務開發的.Net接收&在JSON和JSON-P發送。

我已經在另一個端口上測試了第二個Web應用程序,以確保允許跨域調用。

我還使用了Firefox的RESTclient插件,並可以使用它來成功創建JSON和JSON-P調用。 [http://restclient.net/] 所以我確信WCF服務正在按照它應該的方式工作。不應該有任何跨域問題。

當我將Html文件與我知道的jQuery一起工作在Visual Studio中時,爲了eclipse,複製到phonegap應用程序中,我嘗試對我的WCF服務器進行基本調用,但無法連接到服務器。

根據android文檔,我已將URL從[http:// localhost:50425/LoginService.svc/GetData]更改爲[http://10.0.2.2:50425/LoginService.svc/GetData] :[ http://developer.android.com/guide/developing/devices/emulator.html#networkaddresses]

我已經創建了一個允許以下設置的所有白名單:

[接入起源= 「*」]

在cordova.xml文件中。請參閱:[http://professionalaspnet.com/archive/2012/05/15/Whitelisting-Domains-in-Cordova-_2800_PhoneGap_2900_-Android.aspx]

根據AndroidManifest.xml文件設置了正確的權限以[http://docs.phonegap.com/en/1.8.1/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android]

當我發起呼叫時,我使用$。ajaxSetup錯誤功能捕獲網絡錯誤等,並顯示警報錯誤消息。使用console.log()來確保它傳遞這個函數時沒有錯誤。

當通話實際發生時,我收到一個「錯誤的請求 - 無效的主機名。HTTP 400.請求主機名無效。」

如果調用會成功,我會在Visual Studio中使用斷點來確定已經進行了調用並查看請求。

如果我可以訪問「外部」主機,還有其他方法可以從仿真器進行測試嗎?在這種情況下,確保模擬器實際上可以找到服務? 是否有任何工具或其他配置設置需要完成?

我甚至刪除了我的模擬器並創建了一個新的模擬器,但它仍然無法連接到WCF服務。

我真的很喜歡這個工作,想建立一個完整的phonegap應用程序,但不能繼續,如果我不能打電話給Web服務。

任何意見,將不勝感激。

+0

我開發了一個使用RESTful WebService的PhoneGap應用程序。您應該使用瀏覽器瀏覽您的js代碼,無論是firefox w/firebug或chrome。如果這可以起作用,模擬器可能會發出一些問題。也許有些設置? – furier

+0

您好,謝謝您的回覆。我同意它必須是模擬器內的設置,因爲應用程序本身可以在Visual Studio中使用jsonp回調。只是想證明我可以從web服務器的phonegap中獲取數據,所以我可以繼續開發... – Vortex

+0

那麼我的猜測是你使用JQuery來查詢Web服務,所以你實際上並沒有爲此使用PhoneGap。那麼它不是一個PhoneGap js問題,idk如果它可能是PhoneGap包裝器項目或模擬器中的一些設置,但其中的一個將是我的猜測。 – furier

回答

0

PhoneGap實際上只是一個html/css/js網頁的包裝,帶有一個用於訪問手機特定功能的js庫,可以將其編譯爲多個原生移動平臺應用程序。

因此,這實在不是一個PhoneGap的問題...

你說你正在使用jQuery來查詢您的Web服務,如果你可以打開HTML文件,該文件在您的正常瀏覽器窗口的要求火災,並一切正常。問題不在於代碼,而是使用您正在使用的模擬器,可能是一些未命中配置idk。

好的,如果仍然失敗,你很可能指向錯誤/沒有IIS實例。 如果你有兩個IIS實例在端口80上運行,那麼idk會如何運行,但我認爲這樣做不會很好,我的猜測是其中一個會覆蓋另一個。

因此,如果您在IIS 1上安裝web服務,但IIS 2會覆蓋IIS 1,那麼您將永遠無法訪問web服務,並收到錯誤消息。

因此,當您更改爲指向其他IIS實例時,它再次開始工作。

+0

感謝隊友的幫助。是的,應該知道這很簡單。你是對的。我在IIS上使用不同的實例和端口來模擬整個跨域問題。我希望確保在進入生產環境之前讓它工作。非常高興我終於從電話內部得到了它的工作。只連接到本地IIS上的端口80(不表示)。學到了一些總是好的新東西。再一次,謝謝你:) – Vortex