2014-11-25 70 views
5

我正在使用Visual Studio 2013 Update 4,并且我有一个web api项目安装程序来接收获取返回数组的请求。对于客户端应用程序,我已经安装了cordova,并且正在模拟一个使用ng-resource调用web api获取的android角度应用程序。每次我打电话给GET时,我都会遇到一个说明连接被拒绝的ripple.js错误。即使我尝试使用真正的Android设备,也会拒绝连接。下面是使用波纹模拟器Cordova Angular获取Web Api连接拒绝

OPTIONS http://****:4400/ripple/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rur…Fget%3D%257B%2522method%2522%3A%2522GET%2522%2C%2522array%2522%3Atrue%257D net::ERR_CONNECTION_REFUSED

我肯定启用Web API 2服务器上CORS以来,科尔多瓦和Web API项目都是一样的本地主机上的不同端口号时出错。我不仅证明了cors的功能,而且还通过创建具有角度网页的cordova角度应用的精确副本来代码。我也试过邮差,都正确地得到JSON响应。这是只有科尔多瓦Android应用程序给我的连接被拒绝。任何帮助将不胜感激!

这里是角GET样子

app.factory('mrMaintService', function ($resource) { 
    return $resource('http://localhost:15528/api/requests', { 
     get: { method: 'GET', array: true } 
    }); 
}); 

这表明我允许在网页API项目的所有领域:

<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
</httpProtocol> 
+0

是否已将您的cordova config.xml中的api域列入白名单?见https://cordova.apache.org/docs/en/edge/guide_appdev_whitelist_index.md.html#Whitelist%20Guide – Amitesh 2014-11-25 05:28:21

+0

那里有一个星号,所以我假设所有的都是白名单。我也明确地添加了web api localhost,但没有运气。还有其他建议吗? – 2014-11-25 05:36:41

回答

13

解决的办法是从下拉禁用跨域代理在模拟器右下方。如果您不熟悉纹波模拟器,则容易犯错误。

+0

你有其他建议吗?我已经在webapi项目和cordova config中添加了所有域,禁用了纹波代理,但仍然没有运气。 (它工作在天蓝色,只是本地主机是麻烦) – Larsi 2015-01-31 16:47:14

+0

你有没有尝试所有三种设置的波纹?我相信远程,本地和残疾人士。也许你有一个Cors的问题? – 2015-02-02 20:31:44

+1

@Larsi已经有好几个月了,但我希望你已经找到了解决你的问题的方法。如果没有,请参阅下面的关于使用Android特殊地址10.0.2.2 – 2015-07-09 20:49:38

5

,因为它涉及到的问题与访问http://localhost(这是同样的事情,127.0.0.1)答案可以在这里找到:http://developer.android.com/tools/devices/emulator.html - 它说:

“另外请注意,您的开发机器上的地址127.0.0.1对应仿真器自己的环回接口如果你想访问开发环境接口(在你的机器上的127.0.0.1)上运行的服务,你应该使用特殊地址10.0.2.2来代替。

因此,而不是使用http://localhost使用http://10.0.2.2,然后附加您使用的任何端口。示例:http://localhost:8001可以访问http://10.0.2.2:8001