2017-05-13 3 views
1

가장 최신 .NetCore로 업그레이드하기 전에 HttpWebRequest를 실행하고 헤더와 내용 유형을 추가하고 트 위치에서 JSON 파일의 스트림을 가져 왔습니다. 업그레이드 이후로는 작동하지 않습니다. 응답 스트림을 가져올 때마다 웹 예외가 수신됩니다. 오래 된 봇과 여전히 작동하기 때문에 트 위치로 변경된 것은 없습니다. 이전 코드는 다음과 같습니다 :.NETCore HttpWebRequest - 오래된 방법이 작동하지 않습니다.

private const string Url = "https://api.twitch.tv/kraken/streams/channelname"; 
HttpWebRequest request; 
     try 
     { 
      request = (HttpWebRequest)WebRequest.Create(Url); 
     } 

     request.Method = "Get"; 
     request.Timeout = 12000; 
     request.ContentType = "application/vnd.twitchtv.v5+json"; 
     request.Headers.Add("Client-ID", "ID"); 
     try 
     { 
      using (var s = request.GetResponse().GetResponseStream()) 
      { 
       if (s != null) 
        using (var sr = new StreamReader(s)) 
        { 

        } 
      } 
     } 

나는 몇 가지 연구를하고 내가 사용 어느 쪽 HttpClient를 또는 HttpRequestMessage 시작해야 할 수 있음을 발견했다. 나는 이것을 시도했지만 헤더 내용 유형을 추가 할 때 프로그램이 중단되고 종료됩니다. 여기에 첫 번째 줄 이후 : (사용하는 경우 HttpsRequestMessage)

request.Content.Headers.ContentType.MediaType = "application/vnd.twitchtv.v5+json"; 
request.Content.Headers.Add("Client-ID", "rbp1au0xk85ej6wac9b8s1a1amlsi5"); 

답변

3

당신은 ContentType 헤더를 추가하려고하지만 당신이 정말로 원하는 것은에서만 사용 요청이 GETContentType입니다 (AN Accept 헤더를 추가하는 것입니다있다 본문이 들어있는 요청 (예 : POST 또는 PUT).

.NET 코어에서는 HttpClient을 사용해야하지만 정확하게 사용하려면 asyncawait의 사용을 활용해야 함을 기억하십시오.

using System.Net.Http; 
using System.Net.Http.Headers; 

private const string Url = "https://api.twitch.tv/kraken/streams/channelname"; 

public static async Task<string> GetResponseFromTwitch() 
{ 
    using(var client = new HttpClient()) 
    { 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.twitchtv.v5+json")); 
     client.DefaultRequestHeaders.Add("Client-ID", "MyId"); 

     using(var response = await client.GetAsync(Url)) 
     { 
      response.EnsureSuccessStatusCode(); 

      return await response.Content.ReadAsStringAsync(); // here we return the json response, you may parse it 
     } 
    }  
} 
+0

감사합니다 :

여기가 예입니다! 트윗 URL 중 일부를 변경해야했지만 지금은 작동 중입니다. –

+0

@Federico Dipuma, 다음을 의미합니다. request = (HttpWebRequest) WebRequest.Create (Url); 에서 작동하지 않습니다 .NetCore – Shankar

관련 문제