2015-01-25 11 views
1

처음 API 호출을 시도했지만 약간 어려움을 겪고 있습니다. 내 오류 메시지가 계속 돌아오고, json 응답을 사용하여 내 개체를 채울 계획입니다. OMDB API를 지침은 여기에 (도움이되지하지만)입니다 http://www.omdbapi.com/C# Web API 호출

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"); 
     } 
    } 
} 

공지 것을 : 기본 URL에

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

하지를 당신이 그것을 배치한다.

또한 제대로 비동기 메서드를 작성하려면 내부에 await이 필요하고 당연히 차단 작업 인 .Result 속성을 열심히 호출하지 않아야합니다.

+0

많은 감사합니다, 거기에 자리했다 – ManxJason

+0

그것은 어디 그것이 기본 주소에 QueryString 부분을 접촉한다고 않습니다. [여기] (https://msdn.microsoft.com/en-us/library/hh158944(v=11118) .aspx)를 보았지만 URI가 나와 있습니다. QS를 기지에 추가한다고하는 사무원 문서는 어디에 있습니까? (GetAsync에서) –

+0

@RoyiNamir, 이에 대한 공식 문서가 있는지 확실하지 않습니다. 피들러 (Fiddler)에게 덮개 밑에서 일어나는 일과 보내지는 정확한 HTTP 요청을 알아보십시오. –