2010-04-08 5 views
27

HTTP 302 리디렉션을 반환하는 URL이 있는데 리디렉션되는 URL을 얻고 싶습니다.HTTP 302 리디렉션으로 WebClient에서 위치 가져 오기?

문제는 System.Net.WebClient가 실제로 나쁜있는, 그것을 따를 것이다. HttpWebRequest도 똑같이하는 것 같습니다.

간단한 HTTP 요청을하고 다음 웹 클라이언트없이 대상의 위치를 ​​다시 얻을 수있는 방법이 있나요?

나는 HTTP는 간단하다로 원시 소켓 통신을 할 유혹 해요,하지만 사이트가 HTTPS를 사용하고 난 핸드 셰이 킹을하고 싶지 않습니다. 끝에

, 내가 사용하는 클래스 상관 없어, 난 그냥 302 리디렉션 HTTP를 따라하고 싶지 않은 : HttpWebRequest

답변

17

당신이 자신을 재 처리 할 falseAllowAutoRedirect을 설정할 수 있습니다.

14

HttpWebRequest의 속성은 AllowAutoRedirect이며이 값은 false (it is always true for WebClient)로 설정 한 다음 Location HTTP 헤더를 가져올 수 있습니다.

+0

참고로이 링크가 가리키는 섹션 바로 위에있는 페이지에는 숨겨져 있습니다. https://msdn.microsoft.com/en-us/library/system.net.webclient.aspx?f=255&MSPPError=-2147217396#Examples – dragon788

20

그것은 할 매우 쉽게

의 당신은 HttpWebRequest를 호출 myRequest

어떤 내가 나를 바로 앞에 VS없는 오류를 컴파일
// don't allow redirects, they are allowed by default so we're going to override 
myRequest.AllowAutoRedirect = false; 

// send the request 
HttpWebResponse response = myRequest.GetResponse(); 

// check the header for a Location value 
if(response.Headers["Location"] == null) 
{ 
    // null means no redirect 
} 
else 
{ 
    // anything non null means we got a redirect 
} 

변명을 만든 가정하자,하지만 난했습니다 과거에는 이것을 사용하여 리디렉션을 확인했습니다.

+0

allow redirect가 원래 OP의 일부인 false로 추가되었습니다. – Justin

+1

오타 :'AllowAutoRedirect'가 아닌'AutoAllowRedirect' –

+0

@ 존인 감사합니다 존 예를 업데이트했습니다! – Justin

0

또한, 단지 새 위치를 필요로 누군가를 위해, HttpResponseMessageRequestMessage 속성이 있습니다. WebClient이 설정되면 AllowAutoRedirect 속성을 변경하는 것을 지원하지 않기 때문에 때때로 유용 할 수 있습니다.

관련 문제