0
쿠키를 지원하는 WebClient를 사용하여이 사이트에서 양식을 제출하려했습니다 : freeclassifieds. 내 업그레이드 된 웹 클라이언트 :WebClient를 사용하여 asp.net 웹 사이트에 로그인 할 수 없습니다.
public class CookieWebClient : WebClient
{
private readonly CookieContainer container = new CookieContainer();
public CookieWebClient(CookieContainer container)
{
this.container = container;
}
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest res = base.GetWebRequest(address);
var request = res as HttpWebRequest;
if (request != null)
{
request.CookieContainer = container;
}
return res;
}
protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result)
{
WebResponse response = base.GetWebResponse(request, result);
ReadCookies(response);
return response;
}
protected override WebResponse GetWebResponse(WebRequest request)
{
WebResponse response = base.GetWebResponse(request);
ReadCookies(response);
return response;
}
private void ReadCookies(WebResponse r)
{
var response = r as HttpWebResponse;
if (response != null)
{
CookieCollection cookies = response.Cookies;
container.Add(cookies);
}
}
}
하지만 양식을 제출려고 할 때, 난 그냥 차단 및 응답으로 로그인 페이지를 수신받을. 로그인 페이지에서 쿠키와 입력란을 확인했는데 모든 것이 조정 된 것처럼 보입니다. 로그인 성공 후 올바른 페이지를받을 수없는 이유는 무엇입니까?
static void Main(string[] args)
{
string link1 = "http://www.freeclassifieds.com/logon.aspx";
string fileName= @"D:\Dropbox\myProjects\AutoPostMachine\myHtml.html";
CookieWebClient wc = new CookieWebClient(new CookieContainer());
NameValueCollection postDataCollection= new NameValueCollection();
postDataCollection.Add("ctl00$phMain$txtEmail", "myEmail");
postDataCollection.Add("ctl00$phMain$txtPassword","myPassword");
postDataCollection.Add("ctl00$phMain$btnLogin","Login");
wc.Encoding = Encoding.UTF8;
wc.Credentials = CredentialCache.DefaultCredentials;
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
wc.Headers[HttpRequestHeader.Cookie] = "ASP.NET_SessionId=mfqdx1505nnbw3bxws01so12; __utma=19755559.732186057.1355692154.1355692154.1355695835.2; __utmb=19755559.3.10.1355695835; __utmc=19755559; __utmz=19755559.1355692154.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)";
byte[] byteArr= wc.UploadValues(link1, postDataCollection);
FileStream fs = new FileStream(fileName, FileMode.Create);
fs.Write(byteArr, 0, byteArr.Length);
Process.Start(fileName);
}
감사합니다. 그래서 POSTBACK 이벤트를 실제로 트리거하는 방법은 무엇입니까? – Sherni