2014-11-25 88 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