2014-11-25 10 views
5

Korzystam z aktualizacji 4 programu Visual Studio 2013 i mam konfigurację projektu web api, aby otrzymywać żądania pobrania zwracające tablicę. Dla aplikacji klienckiej mam konfigurację cordova i emuluję aplikację kanciastą z Androidem, używając ng-resource, aby wywołać interfejs API. Za każdym razem, gdy nazywam GET, pojawia się błąd ripple.js, który mówi, że połączenie zostało odrzucone. Odmawiam połączenia, nawet jeśli spróbuję użyć prawdziwego urządzenia z Androidem. Oto błąd podczas korzystania tętnienia emulatoraCordova Angular Uzyskaj połączenie z Internetem Api Odmowa

OPCJE 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

Byłem pewny, aby umożliwić Cors na serwerze Web API 2, ponieważ projekty Cordova i Web API są różne numery portów na tym samym hoście lokalnym. Udowodniono nie tylko funkcjonalność cors, ale także kod, tworząc dokładną replikę aplikacji kątowej cordova za pomocą prostej kanciastej strony internetowej. Próbowałem również z listonoszem i obydwa otrzymywałem odpowiedzi JSON poprawnie. To tylko app Android Cordova daje mi odmowę połączenia. Każda pomoc będzie bardzo ceniona!

Oto co kątowa get wygląda

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

To pokazuje mi pozwalając wszystkich domen na Project Web API:

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

czy na białej liście znajduje się domena api w pliku cordova config.xml. zobacz https://cordova.apache.org/docs/en/edge/guide_appdev_whitelist_index.md.html#Whitelist%20Guide – Amitesh

+0

Tam była gwiazdka, więc zakładam, że wszystkie są białe na liście. Dodałem też wyraźnie web api localhost, ale bez powodzenia. Jakieś inne sugestie? –

Odpowiedz

13

Roztwór wyłączyć krzyżowe proxy domen z listy w prawo w emulatorze. Łatwy błąd, jeśli nie znasz emulatora tętnienia.

+0

Czy masz inne sugestie? Dodałem wszystkie domeny zarówno w projekcie webapi, jak iw konfiguracji cordova, wyłączyłem serwer proxy ripple, wciąż nie ma szczęścia. (Działa na lazurach, tylko localhost to problem) – Larsi

+0

Czy wypróbowałeś wszystkie trzy ustawienia w marszczyć? Zdaje mi się, że zdalny, lokalny i wyłączony. A może masz problem z cors? –

+1

@Larsi Minęło wiele miesięcy, ale mam nadzieję, że znalazłeś rozwiązanie swojego problemu. Jeśli nie, zobacz moją odpowiedź poniżej na temat korzystania z specjalnego adresu Android 10.0.2.2 –

5

Odpowiedź ponieważ odnosi się do problemów z dostępem http://localhost (co jest tym samym, co 127.0.0.1) można znaleźć tutaj: http://developer.android.com/tools/devices/emulator.html - który mówi:

„Należy również pamiętać, że adres 127.0.0.1 na komputerze rozwoju odpowiada własny interfejs zwrotny emulatora .Jeśli chcesz uzyskać dostęp do usług uruchomionych w interfejsie sprzężenia zwrotnego twojego urządzenia programistycznego (aka 127.0.0.1 na twoim komputerze), powinieneś zamiast tego użyć specjalnego adresu 10.0.2.2. "

Zamiast używać http://localhost użyj , a następnie dołącz dowolny port, którego używasz. Przykład: http://localhost:8001 może być dostępny pod numerem http://10.0.2.2:8001

Powiązane problemy