2015-03-04 2 views
2

У меня есть простой web-api, работающий на localhost. Вот как я это называю:Позвоните в веб-Api с xamarin

using (var client = new HttpClient()) 
      { 
       client.BaseAddress = new Uri("http://localhost:XXXXX/"); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
       HttpResponseMessage response = client.GetAsync("api/users/").Result; 

      } 

Теперь я хотел бы вызвать API от моего андроид эмулятор, но Im unning в неприятности.

Я изменил Url к:

client.BaseAddress = new Uri("http://10.0.2.2:XXXX) 

Это должно позволить эмулятор назвать Localhost от того, что я понял.

Что происходит, так это то, что соединение Тайм-аут. Если я ставлю BP на линии:

HttpResponseMessage response = client.GetAsync("api/users/").Result; 

И парить над GetAsync, это говорит Unknown member, чувствует, что может что-то делать с этим? Какие-нибудь советы?

+1

Вы пытались сделать то же самое с реального устройства? См. Http://stackoverflow.com/questions/6192726/android-emulator-loopback-to-iis-express-does-not-work-but-does-work-with-cassi – Milen

+0

Благодарим за ответ. Я попытался обмануть ссылки и добавил: в мою IIS-express-config. Тот же результат ... – bugsy

+0

У меня была аналогичная проблема, но она отлично работала от реального устройства ... – Milen

ответ

0

Пожалуйста, обратитесь к официальной документации для Using the Emulator:

Network Address Description 
10.0.2.1   Router/gateway address 
10.0.2.2   Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine) 
10.0.2.3   First DNS server 
10.0.2.4/10.0.2.5/10.0.2.6 Optional second, third and fourth DNS server (if any) 
10.0.2.15  The emulated device's own network/ethernet interface 
127.0.0.1  The emulated device's own loopback interface 

В вас должны попробовать 10.0.2.2.

+0

За что голосовать? –

Смежные вопросы