2017-03-15 3 views
0
static void Main() 
    { 
     Console.WriteLine("10504: " + TestURL("business.lynchburgchamber.org")); 
     Console.WriteLine("Google: " + TestURL("google.com")); 

     Console.ReadKey(); 
    } 

    static string TestURL(string baseURL) 
    { 
     try 
     { 
      string httpsURL = "https://" + baseURL; 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpsURL); 
      return request.RequestUri.Scheme; 
     } 
     catch 
     { 
      string httpURL = "http://" + baseURL; 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpURL); 
      return request.RequestUri.Scheme; 
     } 
    } 

나는 http 또는 https인지 확인하기 위해 URL을 테스트하고 있습니다. 내 생각은 HTTPS 요청이 통과하는지 확인하기 위해 HttpWebRequest를 사용하고 http가 실패하면 실패합니다. 내 문제는 내가 브라우저에 https://business.lynchburgchamber.org로 가면 연결에 실패하지만 내 웹 요청은 https를 반환한다는 것입니다. 누구든지이 일을하는 더 좋은 방법이 있습니까?HttpWebRequest.RequestURI.Scheme 항상 'https'를 반환 중

답변

1

귀하의 문제는 귀하가 요청을 발행하지 않는다는 것입니다.

은 그래서 당신이 실제로해야 할 일은 이것이다 :

static string TestURL(string baseURL) 
{ 
    try 
    { 
     string httpsURL = "https://" + baseURL; 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpsURL); 
     request.Method = "GET"; 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     return request.RequestUri.Scheme; 
    } 
    catch 
    { 
     string httpURL = "http://" + baseURL; 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpURL); 
     //request.Method = "GET"; 
     //HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     return request.RequestUri.Scheme; 
    } 
} 

두 번째 발행도 할 수 있지만, 난 당신이 사이트가 https이 있는지 확인하려는 생각,이 오해의 소지가 될 것이다.

인터넷에 연결되어 있지 않으면 http가 반환됩니다.

0

당신이 URL에서 응답이있는 경우 Request.GetResponse 정말 확인하기 위해 추가는 80을 반환하는 경우에는 포트

rt.ResponseUri.Port 

을 확인할 수 있습니다이 후,

var rt=request.GetResponse(); 

정말 확실하게 그것을 HTTPS의 경우 443, HTTPS의 경우 443이어야합니다.