using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace WebApiCall
{
public class CookieAwareWebClient : WebClient
{
public void Login(string loginPageAddress, string loginData)
{
CookieContainer container;
var request = (HttpWebRequest)WebRequest.Create(loginPageAddress);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
var buffer = Encoding.ASCII.GetBytes(loginData.ToString());
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;
request.ContentType = "application/json; charset=utf-8";
request = (HttpWebRequest)WebRequest.Create("http://localhost:55555/Services/Northwind/Customer/List");
request.CookieContainer = container;
WebResponse cresponse = request.GetResponse();
using (Stream s = cresponse.GetResponseStream())
using (StreamReader sr = new StreamReader(s))
File.WriteAllText("code.html", sr.ReadToEnd());
}
public CookieAwareWebClient(string loginPageAddress, string loginData)
{
Login(loginPageAddress, loginData);
}
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;
}
}
class Program
{
static void Main(string[] args)
{
var loginPage = "http://localhost:55555/Account/Login";
string postData = "Username=admin";
postData += "&Password=serenity";
var loginData = new NameValueCollection
{
{ "Username", "admin" },
{ "Password", "serenity" },
};
var client = new CookieAwareWebClient(loginPage, postData);
}
}
}