Подключитесь на сайте с HttpWebRequest
Я пытался использовать HttpWebRequest для подключения к сайту для загрузки источника, который необходимо было зарегистрировать. Запрос не связывает меня или не держит меня на связи, чтобы позволить мне делать то, что я хочу, как загрузить источник, чтобы получить специальную информацию, связанную, например, с моей учетной записью.
Вот моя первая попытка:
private void button6_Click(object sender, EventArgs e)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("example.com/index.php?do=login");
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.Method = "POST";
string postData = "username=user&password=pass";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Foo";
request.Accept = "*/*";
request.Headers.Add("Authorization", "Basic ");
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string Text = "";
foreach (Cookie cook in response.Cookies)
{
Text += "COOKIE: " + cook.Name + " = " + cook.Value + "\r\n";
}
request.AllowAutoRedirect = true;
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
webBrowser1.Navigate("example.com/client.php"); // client.php can be only visited when the user is log in.
// redirect me on /index.php instead of client.php
}
Я также пытался использовать веб-клиент:
using (var client = new CookieAwareWebClient())
{
var values = new NameValueCollection
{
{ "username", "user" },
{ "password", "pass" },
};
// Was forced to use user-agent or the server return me a 403 Error
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
client.UploadValues("example.com/index.php?process=login", values);
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
string result = client.DownloadString("example.com/client.php");
Console.WriteLine(result);
// The source is a document location replace to logout.php?raison=Erreur
}
private class CookieAwareWebClient : WebClient
{
public CookieAwareWebClient()
: this(new CookieContainer())
{ }
public CookieAwareWebClient(CookieContainer c)
{
this.CookieContainer = c;
}
public CookieContainer CookieContainer { get; set; }
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
var castRequest = request as HttpWebRequest;
if (castRequest != null)
{
castRequest.CookieContainer = this.CookieContainer;
}
return request;
}
}
Я новичок, поэтому я уверен, что совершил глупые ошибки, но я ищу решение своей проблемы с 2 недель, я действительно надеюсь, что кто-то может мне помочь.
Извините за английский, я француз.