2012-08-17 3 views
0

주어진 호스트가 HTTP 웹 요청에 응답하는지 확인해야합니다. 그래서 내가해야 할 일은 HttpWebRequest.Create (someURI)이며 응답을 확인하는 것입니다.HttpWebRequest.Create 및 방화벽

HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(targetUri); 

TimeSpan timeOut = TimeSpan.FromSeconds(timeOutInSeconds); 
webRequest.Timeout = (int)timeOut.TotalMilliseconds; 
webRequest.Proxy = proxy; 
webRequest.AllowAutoRedirect = false; // get extra information with this turned off, but doesn't affect the problem 

response = webRequest.GetResponse() as HttpWebResponse; 

음, 떠오른다 문제는 someURI 우리의 방화벽에 의해 차단되는 경우 (예를 들어 차단 "gibber.com"), 나는 다시 유효한 HttpWebResponse 클래스를 얻을, 그것을 던져하지 않습니다이다 ResponseURI 속성은 실제 서버가 응답하더라도 차단 된 URI ("gibber.com")로 설정됩니다.

HTTP 헤더 내에 위치 키가 있으며 그 값은 로컬 서버의 IP입니다. 하지만 요청이 실제로 반송되면 해결할 텍스트를 구문 분석하고 싶지 않습니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? response.ResponseUri 지정된 호스트 또는 방화벽에 해당하는 경우

감사

+0

왜 텍스트를 구문 분석하지 않으시겠습니까? –

+0

텍스트 파싱은 쉽지만 매우 강력하지는 않습니다. 단지 n 개의 헤더를 추출하고 그 중 하나에는 서버의 IP가 포함됩니다. 차단 된 URL에 대한 위치 헤더가 항상 존재한다는 것을 알았다면 그 URL은 항상 서버/게이트웨이의 주소가됩니다. 그러나 나는 그것을 모른다. – Mijin

답변

0

체크를 확인합니다.

+0

response.ResponseUri는 차단 된 URL입니다. – Mijin

+0

사실 내가 차단 된 상태 일 때 ResponseURI가 원하는 호스트를 잘못 리턴하고 있다고 가정했기 때문에 겸손한 파이를 많이 먹어야했습니다. 실제로이 특정 호스트는 발신을 차단하지 않았지만 수신시 콘텐츠를 기반으로 했으므로 여기의 ResponseURI는 실제로 정확합니다. – Mijin