У меня есть проблема.Я должен добавить авторизацию на сайте и затем выполнить анализ информации.
Я решил проблему с помощью webBrowser, но хочу сделать это с помощью webClient или HttpClient
HTML code
<form role="form" method="POST">
<div class="form-row">
<input type="text" id="userLogin" required="required"
name="username" placeholder="Username" autofocus="autofocus">
</div>
<div class="form-row">
<input type="password" id="userPassword" required="required"
name="password" placeholder="Password">
</div>
<div class="btns-row">
<span class="forgot-pwd"><a href="/app/recoverPassword/">Forget password?</a></span>
<button id="userSignIn" class="btn" type="submit">Enter</button>
</div>
</div>
<input type="hidden" id="urlParams" name="params" />
</form>
Я пытался сделать это, но он не работает
private void button3_Click(object sender, EventArgs e)
{
using (var webClient = new CookieAwareWebClient())
{
//webClient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
webClient.UploadString("http://server/app/login/", "username=user1&password=pass1");
//webClient.Headers.Remove(HttpRequestHeader.ContentType);
string answer = webClient.DownloadString("http://server/app/obj/");
richTextBox1.AppendText(answer);
}
}
Класс Cookie
public class CookieAwareWebClient : WebClient
{
public void Login(string loginPageAddress, NameValueCollection loginData)
{
CookieContainer container;
var request = (HttpWebRequest)WebRequest.Create(loginPageAddress);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
var query = string.Join("&",
loginData.Cast<string>().Select(key => $"{key}={loginData[key]}"));
var buffer = Encoding.ASCII.GetBytes(query);
request.ContentLength = buffer.Length;
var requestStream = request.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Close();
container = request.CookieContainer = new CookieContainer();
var response = request.GetResponse();
response.Close();
CookieContainer = container;
}
public CookieAwareWebClient(CookieContainer container)
{
CookieContainer = container;
}
public CookieAwareWebClient()
: this(new CookieContainer())
{ }
public CookieContainer CookieContainer { get; private set; }
protected override WebRequest GetWebRequest(Uri address)
{
var request = (HttpWebRequest)base.GetWebRequest(address);
request.CookieContainer = CookieContainer;
return request;
}
}
Можете ли вы помочь мне, как сделать авторизацию на сайте с помощью webClient или HttpClient?