2017-02-19 39 views
1

我使用Xamarin形式爲使用來自Netflix的REST API,但我在彈出得到這個問題: System.Net.WebException:錯誤:NameResolutionFailureXamarin的HttpClient

爲什麼Ø得到這個錯誤?

我的代碼:

private HttpClient client = new HttpClient(); 
    private List<Movie> movies; 

    public async Task<List<Movie>> LocalizaFilmesPorAtor(string ator) 
    { 

     if (string.IsNullOrWhiteSpace(ator)) 
     { 
      return null; 
     } 
     else 
     { 
      string url = string.Format("http://netflixroulette.net/api/api.php?actor={0}", ator); 
      var response = await client.GetAsync(url); 

      if (response.StatusCode == HttpStatusCode.NotFound) 
      { 
       movies = new List<Movie>(); 
      } else 
      { 

       var content = await response.Content.ReadAsStringAsync(); 
       var _movies = JsonConvert.DeserializeObject<List<Movie>>(content); 
       movies = new List<Movie>(_movies); 
      } 

      return movies; 
     } 
    } 

在調試模式下說錯誤是在此代碼

string url = string.Format("http://netflixroulette.net/api/api.php?actor={0}", ator); 
      var response = await client.GetAsync(url); 

他停在那裏,網址recive網址+演員的名字,但在下一行響應保留爲空。

PS:我將互聯網許可給我的應用程序在清單!

+1

NameResolutionFailure通常意味着一個DNS問題。您是否驗證過您可以從設備的瀏覽器加載該網站? – Jason

+1

當URL失敗時,檢查瀏覽器中的URL。有時它會站在你身邊。在編碼中添加錯誤的更多原因 – user7568042

+0

在android模擬器中,我獲得了很多,有時網絡橋接器不能正常工作。 –

回答

0

nuget包:Microsoft HTTP客戶端庫Newtonsoft.Json

試試這個:

private HttpClient client = new HttpClient(); 
private List<Movie> movies; 

public async Task<List<Movie>> LocalizaFilmesPorAtor(string ator) 
{ 

    if (string.IsNullOrWhiteSpace(ator)) 
    { 
     return null; 
    } 
    else 
    { 
    var client = new HttpClient(); 
    client.BaseAddress = new Uri("http://netflixroulette.net/"); 
    HttpResponseMessage response = client.GetAsync("api/api.php?actor={0}", ator); 
     if(response.IsSuccessStatusCode) 
     { 
     var json = response.Content.ReadAsStringAsync().Result; 
     var _movies = JsonConvert.DeserializeObject<List<Movie>>(json); 
     movies = new List<Movie>(_movies); 

     } 
     else 
     { 

      movies = new List<Movie>(); 
     } 

     return movies; 
    } 
} 

PS:如果電影=新名單(_movies)沒有工作,嘗試的foreach。

+1

當給出答案時,最好給出[一些解釋爲什麼你的答案](http://stackoverflow.com/help/how-to-answer)是一個答案。 –

+0

對不起,我是新來的,下次我會做得更好。 –

+1

你現在確實可以做得更好。在你的帖子的左下方是一個'edit'鏈接。不要害怕編輯來改善這裏的事物。乾杯。 –

0

爲什麼不能嘗試改裝? 改裝是通過廣場的改造圖書館大量的啓發庫,並把你的REST API到現場接口

你剛纔需要做的是:

  1. 從NuGet包添加改裝
  2. 創建接口與任何名稱
  3. 導入改裝(改裝使用)

這裏是接口

示例代碼
public interface ISampleName 
{ 

    [Get("api/api.php?actor={ator}")] 
    async Task<List<Movie>> LocalizaFilmesPorAtor(string ator); 
} 

之後,那麼你可以這樣調用它:

var SampleNameApi = RestService.For<ISampleName>("http://netflixroulette.net/"); 

var response= await SampleNameApi.LocalizaFilmesPorAtor("Sample"); 

我相信這將幫助你。

更多信息https://github.com/paulcbetts/refit

+0

非常酷的傢伙,我會試試! –

0

我有這個問題過分,因爲我的URL格式不正確。仔細檢查您的URL是否正確使用郵遞員/瀏覽器。

相關問題