0
我嘗試登錄到與C#WebClient的一個論壇,以取得userrelevant信息 我的問題是登錄失敗 我試圖通過郵寄登錄與Web客戶端(cookieaware)論壇失敗
我實際的代碼提交所有需要的數據:獲得所需
var url = new Uri("http://www.hardwareluxx.de/community/");
string user = Properties.Resources.username;
string pass = Properties.Resources.password;
var client = new CookieAwareWebClient();
client.BaseAddress = @"http://www.hardwareluxx.de/community/";
var document = new HtmlDocument();
document.Load(new MemoryStream(client.DownloadData("index.php")));
postData = new NameValueCollection();
postData.Add("vb_login_username", user);
postData.Add("cookieuser", "1");
postData.Add("vb_login_password", "");
postData.Add("s", "");
postData.Add("securitytoken", "guest");
postData.Add("do", "login");
postData.Add("vb_login_md5password", GetMd5Hash(pass));
postData.Add("vb_login_md5password_utf", GetMd5Hash(pass));
document.Load(new MemoryStream(client.UploadValues(url + "login.php?do=login", postData)));
和一個小的幫扶方法MD5哈希值進行登錄:
public static string GetMd5Hash(string TextToHash)
{
//Prüfen ob Daten übergeben wurden.
if (string.IsNullOrEmpty(TextToHash))
{
return string.Empty;
}
//MD5 Hash aus dem String berechnen. Dazu muss der string in ein Byte[]
//zerlegt werden. Danach muss das Resultat wieder zurück in ein string.
MD5 md5 = new MD5CryptoServiceProvider();
byte[] textToHash = Encoding.Default.GetBytes(TextToHash);
byte[] result = md5.ComputeHash(textToHash);
return BitConverter.ToString(result);
}
和Web客戶端其中cookie被存儲,以及:
public class CookieAwareWebClient : WebClient
{
private readonly CookieContainer _cookie = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = _cookie;
}
return request;
}
}