2013-10-25 5 views
0

서버 팀은 HTTPClient를 사용할 때 아래 코드가 모두 ""이라고 말하면서이 HTTPS 웹 사이트에서 문제가 없다고 말합니다. 요청을 중단했습니다. 만들 수 없습니다. SSL/TLS 보안 채널 "오류와 동시에 원하는 데이터를 반환하여 완벽하게 작동합니다. 다른 방법으로이 문제를 접근하기 위해HttpClientHandler/요청이 중단되었습니다. SSL/TLS 보안 채널을 만들 수 없습니다.

public async Task<string> GetDataAsync(string baseAddress, string relativeAddress, string token) 
{ 
    string responseBodyAsText = string.Empty; 
    string responseStatusCode = string.Empty; 
    try 
    { 
     using (HttpClientHandler handler = new HttpClientHandler()) 
     { 
      handler.Credentials = new NetworkCredential(token, token); 
      using (HttpClient client = new HttpClient(handler)) 
      { 
       client.BaseAddress = new Uri(baseAddress); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); 
       using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, relativeAddress)) 
       { 
        using (HttpResponseMessage response = await client.SendAsync(request)) 
        { 
         responseBodyAsText = await response.Content.ReadAsStringAsync(); 
         responseStatusCode = ReturnStatusCode(response); 
        } 
       } 
      } 
     } 
    } 
    catch (Exception e) 
    { 
     responseBodyAsText = BuildErrorMessage("response", "error", e.InnerException.Message, responseStatusCode); 
    } 
    return responseBodyAsText; 
} 

나는의 HttpWebRequest와 HttpWebResponse 클래스 사용하는 다른 방법을 썼다. 이 코드는 지금까지 "요청이 중단되었습니다 : SSL/TLS 보안 채널을 만들 수 없습니다."; 그러나 나는 가능한 문제가 될만한 것을 찾기 위해 이것을 게시하고 싶었습니다.

public async Task<string> GetDataAsync(string url, string token) 
    { 
     string responseString = string.Empty; 
     try 
     { 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.Trim()); 
      request.Method = "GET"; 
      request.ContentType = "application/xml"; 
      request.Headers[HttpRequestHeader.Authorization] = GetAuthorizationText(token.Trim()); 

      var response = (HttpWebResponse)await request.GetResponseAsync(); 
      if (response != null) 
      { 
       var responseStream = new StreamReader(response.GetResponseStream()); 
       responseString = await responseStream.ReadToEndAsync(); 
       if (responseString.Trim().Length == 0) 
        throw new InvalidDataException("No Content"); 
      } 
      else 
       throw new NullReferenceException("Reponse is null"); 
     } 
     catch (WebException we) 
     { 
      responseString = BuildErrorMessage("response", "error", we.Response.Headers["Status"].ToString()); 
     } 
     catch (Exception ex) 
     { 
      WriteDiagnosticsInformation(ex); 
      responseString = BuildErrorMessage("response", "error", ex.Message); 
     } 

     return responseString; 
    } 

의견을 보내주십시오. HTTPClient를 사용할 때 문제가 될 수 있습니다.

답변

1

봅니다이

ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }; 

모든

+0

전에 최근에 언급 위를 수신하지 않았다면 넣어. 이 코드의 목적을 알려 주시면 좋을 것입니다. 고맙습니다! –

관련 문제