2017-03-25 59 views
0

我是Xamarin Forms新手。我正在構建一個消耗Web服務的應用程序。嘗試連接到服務器時,我得到HttpRequestException。 InnerException拋出System.Net.WebException: Error: NameResolutionFailure at System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult asyncResult)Xamarin.Droid HttpRequestException

的代碼崩潰是:

public async Task<IEnumerable<Bono>> GetAll() 
{ 
    var Url = Constants.baseUrl + "cliente/1/bonos"; 
    HttpClient cliente = new HttpClient(); 
    var bonos = await cliente.GetStringAsync(Url); 
    return JsonConvert.DeserializeObject<List<Bono>>(bonos); 
} 

我使用VS爲Mac。 Xamarin.iOS的作品也一樣。對此有何建議?

+0

'NameResolutionFailure'無論您的'Constants.baseUrl'指向什麼都沒有被解析。 – SushiHangover

+0

我正在使用郵遞員使用該服務,並且在我運行Xamarin.iOS時它可以工作 –

+0

您可以從Android瀏覽器中瀏覽該主機嗎?您的Android項目在您的構建設置中設置了什麼http客戶端實現? – SushiHangover

回答

0

如果您要消耗端點託管在本地機器上,你是在本地的Android模擬器中運行的應用程序,你可以使用下面的IP地址,從仿真器到達主機:

http://10.0.2.2 

當然這會破壞iOS,但它是可以從android模擬器訪問主機的IP。作爲一種替代方案,您可以使用ngrok,它可以創建一個可公開訪問本地機器上託管的端點的隧道,然後從android應用程序訪問公共端點。如果您希望避免將端點託管到可從仿真器訪問的網絡位置,在開發過程中可能會有所幫助。

相關問題