首先,我要感谢 stackoverflow 上的所有专家,通过阅读提出的问题并查看示例代码并阅读我能够得到的答案。再一次感谢你!
我一直在花费数小时寻找解决方案,我已经阅读了很多关于这个问题的帖子。似乎这是很多其他人正在/一直在努力解决的问题。如果有人可以帮助解决这个令人沮丧的问题,我将非常感谢任何更多的建议或提示。
我所有的开发都是在我的本地机器上完成的。(Win 7,Visual Studio 11beta)
WCF 服务在其自己的端口或 IIS 7.5 (.Net Framework 4.0) 上托管在 IIS Express 中
仅具有 Html5/jQuery 的第二个 Web 应用程序托管在不同端口上的 IIS Express 中。
在我的本地机器上也使用带有 Android SDK 17 的 Eclipse 3.7.2。它似乎所有的软件都运行正常。Android Emulator 正在运行,Phonegap/Cordova 库已安装等。我正在使用带有 Cordova 1.6.0 的 Android 4.0.3
我正在寻求帮助以找出为什么我的 phonegap 模拟器 ajax 调用不会通过我的 WCF REST 服务。我现在没有实际的 android 设备来测试程序,因此我必须使用模拟器。
更多细节:
我有一个在.Net 中开发的 WCF REST 服务,以 JSON 和 JSON-P 接收和发送。
我已经在另一个端口上使用第二个 Web 应用程序对此进行了测试,以确保允许跨域调用。
我还使用了 Firefox 的 RESTclient 插件,并且可以使用它成功地进行 JSON 和 JSON-P 调用。[ http://restclient.net/ ] 所以我确信 WCF 服务正在正常工作。不应该有任何跨域问题。
当我使用我知道在 Visual Studio 中工作的 jQuery 获取 Html 文件时,将其复制到 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]
根据 [http://docs.phonegap.com/en/1.8.1/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android] 在 AndroidManifest.xml 文件中设置了正确的权限
当我发起呼叫时,我使用 $.ajaxSetup 错误函数来捕获网络错误等,并显示警告错误消息。使用 console.log() 确保它通过这个函数没有错误。
当调用实际发生时,我收到“错误请求 - 主机名无效。HTTP 400。请求主机名无效。”
如果调用成功,我会在 Visual Studio 中使用断点来确定调用是否已完成并查看请求是否通过。
如果我可以访问“外部”主机,还有其他方法可以从模拟器进行测试吗?在这种情况下,要确保模拟器实际上可以找到服务?是否有任何工具或其他配置设置需要完成?
我什至删除了我的模拟器并创建了一个新模拟器,但它仍然无法连接到 WCF 服务。
我真的很想这样做,想构建一个完整的 phonegap 应用程序,但如果我无法调用 Web 服务,则无法继续。
任何建议将不胜感激。