2012-09-29 2 views
1

업데이트 1 null입니다. 요청의 목적은 사이트에 로그인하여 Set-Cookie 헤더를 검색하는 것입니다. 어떤 도움을 주셔서 감사합니다!는 HttpWebRequest를 resp.Headers [ "- 쿠키 설정"]

저는 웹 요청에 익숙하지 않으므로 나와 함께하시기 바랍니다. 사이트에 로그인하고 아래 코드를 사용하여 쿠키 값을 검색하려고합니다. 그러나, 설정-Cookie 헤더는 항상 null입니다 : // 계정 다음 C# 응용 프로그램에서 응답-URI는 "HTTPS 때문에이, 리디렉션와 아무 상관이있는 경우

static void Main(string[] args) 
{ 
    string formUrl = "https://account.guildwars2.com/login"; 
    string formParams = string.Format("email={0}&password={1}", "xxx", "xxx"); 
    string cookieHeader; 
    var req = (HttpWebRequest)WebRequest.Create(formUrl); 
    req.Referer = "https://account.guildwars2.com/login"; 
    req.ContentType = "application/x-www-form-urlencoded"; 
    req.Method = "POST"; 
    req.KeepAlive = true; 
    byte[] bytes = Encoding.ASCII.GetBytes(formParams); 
    req.ContentLength = bytes.Length; 
    using (Stream os = req.GetRequestStream()) 
    { 
     os.Write(bytes, 0, bytes.Length); 
    } 
    WebResponse resp = req.GetResponse(); 
    cookieHeader = resp.Headers["Set-Cookie"]; 
} 

는 잘 모르겠어요. "guildwars2.com/login?redirect_uri=/download

응답 헤더 크롬

  • 콘텐츠 길이 : 0
  • 의 Content-Type : text/html과
  • ,536,913,632 10
  • 날짜 : 2012년 (토) 9월 29일 그리니치 표준시 15시 07분 30초
  • 위치 :
  • 서버를 다운로드 : 마이크로 소프트 IIS를/7.5
  • 설정 쿠키 : S = 60B845F0-4E22-4A4B-890B-F3B885CEF9AE; 도메인 = guildwars2.com; 경로 = /; 버전 = 1
  • X--에 의해 구동 : ARR/C# 응용 프로그램에서 2.5

응답

  • 콘텐츠 길이 : 7344
  • 의 Content-Type : text/html과
  • 날짜 : 토요일, 29 9 월 2012 15:42:44 GMT
  • 서버 : Microsoft-IIS/7.5
  • X-전원이 작성자 : ARR/2.5
+2

난 당신이 VS의 기압을 사용하지 않는 것이 잘못 입력했을 수도, 보내기 전에 새로운 CookieCollection에 httpWebRequest.CookieCollection를 설정할 필요가 있다고 생각합니다. –

+0

나는 req.CookieContainer = 새로운 CookieContainer()를 시도했다; 하지만 아무 것도 추가되지 않습니다. – Skalis

답변

5

HttpWebRequest 자동 HTTP 리디렉션 응답을 다음의 Set-Cookie를 캡처하지 못하도록 원래 응답의 헤더. 이 동작을 사용하지 않으려면 요청을 보내기 전에 falseAllowAutoRedirect을 설정

req.AllowAutoRedirect = false; 
0

당신은 이런 식으로 사용하여 쿠키를 검색 할 시도 할 수 있습니다 : 기본적으로

CookieContainer cookies = new CookieContainer(); 

WebResponse resp = req.GetResponse(); 

CookieCollection cookieCollection = cookies.GetCookies(request.RequestUri); 
+0

감사하지만 비어있는 쿠키 수집. 리디렉션과 관련이 있다고 생각하기 시작했습니다. Google에서 디버깅 할 때 상태 303 (리디렉션)의 로그인 사이트에 먼저 POST 한 다음 상태 200 (확인)의 다운로드 사이트를 가져옵니다. – Skalis