기본적으로 서버에서 파일을 다운로드하려고합니다. 서버는 괜찮 자동으로 리디렉션을 보내지 만 패킷을 통해 성공적으로 (두 번째 요청의 경우) 헤더는 것을 내가 찾은 파일 다운로드 않는 프로그램 스니핑 : 인 현재의 응답보다 오히려C# 서버 이름없이 HttpWebRequest 보내기
GET /path/to/file.txt
...
Host: server.com
을 500 서버 오류에 정상의 HttpWebRequest 방법의 결과를 사용
GET www.server.com/path/to/file.txt
, 나는 사람이 기대하는 것처럼 단지 상대 경로를 사용하려고 할 때 발생한 예외를 얻을 : 생성 (내가 생각하는 표준이었다). AllowAutoRedirect를 사용하면 쿠키가 제대로 처리되지 않으므로이 시나리오에서는 작동하지 않지만 수동으로 처리하더라도 동일한 오류가 발생합니다.
어떻게하면이 작업을 수행 할 수 있습니까? (소켓이없는 것이 좋음)?
게시물의 "표준"GET이 부러진 것처럼 보입니다. [HTTP 1.1 *에는 * 호스트 헤더가 필요합니다] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23) -이 경우 URI는 서버 기준 일 수도 있습니다 . 더 많은 제어가 필요한 경우 302/303/307은 항상 수동으로 처리 할 수 있습니다. –
파일을 가져 오기 위해 어떤 패키지를 사용하고 있습니까? HttpClient는 NuGet을 통해 사용할 수 있으며 System.Net 클래스보다 훨씬 사용하기 쉽습니다. – Jason
감사합니다. @pst, 당신이 옳았습니다 (내가 생각한 것) 표준 요청이 옳지 않습니다. HttpWebRequest에 의해 생성 된 요청은 호스트를 보내고 있지만 여전히 위와 같이 GET 라인에 넣습니다. 이것을 제거하는 방법이 있습니까? 그것은 나의 요구와 작동하는 것과 다른 것을 볼 수있는 유일한 것입니다. 나는 300 개의 요청을 수동으로 처리하고있다. 하나는 내가 처리하고있는 것은 Location 헤더를 되돌려 보내고, 다음 요청에 이것을 사용하려고한다. (오직 2 개의 쿠키가 서버에서 보내졌고 나의 CookieContainer가 저장하는 것처럼 보인다. 하나는 AllowAutoRedirect를 사용할 때) – James