2015-01-25 3 views
1

Это первый раз, когда я попытался позвонить в API, и я немного борюсь. Я продолжаю возвращать свое сообщение об ошибке, я планирую использовать ответ json для заполнения моего объекта. Инструкции API OMDB здесь (не полезно, хотя): http://www.omdbapi.com/C# Web API call

private static async Task RunAsync() 
{ 
    using (var client = new HttpClient()) 
    { 
     client.BaseAddress = new Uri("http://www.omdbapi.com/?"); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     HttpResponseMessage response = client.GetAsync("t=Captain+Phillips&r=json").Result; 

     if (response.IsSuccessStatusCode) 
     { 
      Console.WriteLine("Success"); 
     } 
     else 
     { 
      Console.WriteLine("Error with feed"); 
     } 
    } 
} 
+1

Какая ошибка вы получаете? –

ответ

4

Вы поставили знак вопроса (?) на неправильном месте. Попробуйте так:

private static async Task RunAsync() 
{ 
    using (var client = new HttpClient()) 
    { 
     client.BaseAddress = new Uri("http://www.omdbapi.com"); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     HttpResponseMessage response = await client.GetAsync("?t=Captain+Phillips&r=json"); 

     if (response.IsSuccessStatusCode) 
     { 
      Console.WriteLine("Success"); 
     } 
     else 
     { 
      Console.WriteLine("Error with feed"); 
     } 
    } 
} 

Обратите внимание, что знак вопроса здесь:

HttpResponseMessage response = await client.GetAsync("?t=Captain+Phillips&r=json"); 

и не на базовом URL, как вы разместили его.

Также, чтобы правильно написать ваш асинхронный метод, вам необходимо на нем await, и не следует с удовольствием называть .Result свойство, которое, конечно же, является блокировкой.

+0

Большое спасибо, вы были там на месте – ManxJason

+0

Где он говорит, что он связывается с частью QueryString с базовым адресом. Я посмотрел [здесь] (https://msdn.microsoft.com/en-us/library/hh158944 (v = vs.118) .aspx), но он говорит URI. но где офисный документ, который говорит, что он добавляет QS к базе? (в GetAsync) –

+0

@RoyiNamir, я не совсем уверен, есть ли официальная документация для этого. Просто посмотрите с Fiddler, чтобы узнать, что происходит под обложками, и точный HTTP-запрос, который отправляется. –