Giriş
Bu sınıf ftp için ve http get/post işlemleri için kullanılır. Sınıf web crawling işlemlerinde bütün sayfayı indirmeden belli alanları çekmek için kullanılabilir.
Bu sınıf ftp için ve http get/post işlemleri için kullanılır. Sınıf web crawling işlemlerinde bütün sayfayı indirmeden belli alanları çekmek için kullanılabilir.
Constructor
Bu sınıfı yaratmak için WebRequest sınıfı factory gibi kullanılıyor. Şöyle yaparız.
Şöyle yaparız.
Get veya Post isteği göndeririz. Web sunucusunun gönderdiği cevabı HttpWebResponse nesnesi olarak alırız.
Şöyle yaparız.
WebHeaderCollection Sınıfı yazısına taşıdım.
KeepAlive Alanı
Şöyle yaparız.
Şöyle yaparız.
Method Alanı
Şöyle yaparız. String kullanmak yerine sabitleri kullanmak daha iyi.
Şöyle yaparız. WebProxy Sınıfı yazısına bakabilirsiniz.
Şöyle yaparız.
Şöyle yaparız
Şöyle yaparız.
Bu sınıfı yaratmak için WebRequest sınıfı factory gibi kullanılıyor. Şöyle yaparız.
WebRequest webRequest = WebRequest.Create("http://example.com"
);
Ancak çoğu kod cast etmeyi tercih ediyor.var http = (HttpWebRequest)WebRequest.Create("http://example.com");
Accept Alanı
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Gzip ve deflate kabul edip etmediğimizi şöyle belirtiriz. DecompressionMethod.GZip ve DecompressionMethod.Deflate OR'lanarak kullanılabilir.
Önce isteğe bir Cookie nesnesi atanır.Şöyle yaparız.
request.Accept = "text/html";
Şöyle yaparız.request.Accept = "text/html,application/xhtml+xml,application/xml";
AllowAutoRedirect AlanıŞöyle yaparız.
request.AllowAutoRedirect = false;
AllowWriteStreamBuffering AlanıŞöyle yaparız.
// Turn off the buffering of data to be written, to prevent
// OutOfMemoryException when sending data
requestToServer.AllowWriteStreamBuffering = false;
AutomaticDecompression Alanı - Veriyi AçmakGzip ve deflate kabul edip etmediğimizi şöyle belirtiriz. DecompressionMethod.GZip ve DecompressionMethod.Deflate OR'lanarak kullanılabilir.
request.AutomaticDecompression = DecompressionMethods.GZip;
ClientCertificates Alanı
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
X509Certificate cert = ...;
string url = "https://...";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ClientCertificates.Add(cert);
request.Method = WebRequestMethods.Http.Get;
WebResponse basicResponse = request.GetResponse();
string responseString = new StreamReader(basicResponse.GetResponseStream()).ReadToEnd();
ContentLength AlanıŞöyle yaparız.
long totalRequestBodySize = ...
request.ContentLength = totalRequestBodySize;
ContentType AlanıŞöyle yaparız.
request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
Şöyle yaparız.// Define a boundary string
string boundaryString = "----";
request.ContentType = "multipart/form-data; boundary=" + boundaryString;
Şöyle yaparız.request.ContentType = "application/zip";
Çıktı olarak şunu görürüz.PUT http://... HTTP/1.1
Content-Type: application/zip
...
CookieContainer c = new CookieContainer();
request.CookieContainer = c;
İsteğe cookie şöyle eklenir.request.CookieContainer.Add(new Cookie(c.Name, c.Value, c.Path, c.Domain));
Credentials AlanıŞöyle yaparız.
request.Credentials = new NetworkCredential("auser", "apassword");
Şöyle yaparız.request.Credentials = CredentialCache.DefaultCredentials;
GetRequestStream metodu
Post yaparken kullanılır. Stream'in kapatılması gerekir.using (Stream stream = httpRequest.GetRequestStream())
{
stream.Write(postBytes, 0, postBytes.Length);
}
GetResponse metoduGet veya Post isteği göndeririz. Web sunucusunun gönderdiği cevabı HttpWebResponse nesnesi olarak alırız.
var response = (HttpWebResponse) request.GetResponse();
Eğer istek ftp ise şöyle yaparız.using (var response = (FtpWebResponse)_request.GetResponse()) {...}
Bu GetResponse ile alınan nesnenin mutlaka kapatılması gerekir.Dolayısıyla kod şöyle yazılmalı.Note that you do need to dispose of the WebResponse returned by request.GetResponse - otherwise the underlying infrastructure won't know that you're actually done with it, and won't be able to reuse the connection.
using (HttpWebResponse response = (HttpWebResponse)httpRequest.GetResponse())
{
// discard response
}
GetResponseAsync metoduŞöyle yaparız.
HttpWebResponse response = await request.GetResponseAsync();
HeadersWebHeaderCollection Sınıfı yazısına taşıdım.
KeepAlive Alanı
Şöyle yaparız.
request.KeepAlive = true;
MaximumAutomaticRedirections Alanı
Şöyle yaparız.request.MaximumAutomaticRedirections = 4;
MaximumResponseHeaderLength AlanıŞöyle yaparız.
request.MaximumResponseHeadersLength = 4;
Şöyle yaparız. String kullanmak yerine sabitleri kullanmak daha iyi.
request.Method = "POST";
Sabit için şöyle yaparız.request.Method = WebRequestMethods.Http.Post;
ftp için şöyle yaparız.request.Method = WebRequestMethods.Ftp.DownloadFile;
Proxy AlanıŞöyle yaparız. WebProxy Sınıfı yazısına bakabilirsiniz.
string MyProxyHostString = "192.168.1.200";
int MyProxyPort = 8080;
request.Proxy = new WebProxy (MyProxyHostString, MyProxyPort);
Referrer AlanıŞöyle yaparız.
request.Referer = "...";
ServerCertificateValidationCallback AlanıŞöyle yaparız
HttpWebRequest request = ...;
request.ServerCertificateValidationCallback += (sender, certificate, chain,
sslPolicyErrors) => true;
Timeout AlanıŞöyle yaparız.
request.Timeout = 20000;
UserAgent Alanı
Şöyle yaparız.
request.UserAgent = "...";
Diğer
Http Post İle Login Olmak İçin kullanmak
Burada amaç logic olmak yani cookie almak. Alınan cookie daha sonraki her istekte gönderilir.
Basit bir örnek şöyle. Sınıfın Method, ContentType, ContentLength gibi alanları doldurulur.
Basit bir örnek şöyle. Sınıfın Method, Accept alanları doldurulur. json döndüren bir API'yı çağırmak için şöyle yaparız.
Http Post İle Login Olmak İçin kullanmak
Burada amaç logic olmak yani cookie almak. Alınan cookie daha sonraki her istekte gönderilir.
static string login(string url, string username, string password)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
string cookie = "";
string values = "vb_login_username="+username+
"&vb_login_password="+password
+ "securitytoken=guest&"
+ "cookieuser=checked&"
+ "do=login";
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = values.Length;
CookieContainer a = new CookieContainer();
req.CookieContainer = a;
System.Net.ServicePointManager.Expect100Continue = false; // prevents 417 error
using (StreamWriter writer = new StreamWriter(req.GetRequestStream(),
System.Text.Encoding.ASCII))
{
writer.Write(values); }
HttpWebResponse c = (HttpWebResponse)req.GetResponse();
foreach (Cookie cook in c.Cookies) {
cookie = cookie + cook.ToString() + ";"; }
return cookie;
}
Http Post İçin kullanmakBasit bir örnek şöyle. Sınıfın Method, ContentType, ContentLength gibi alanları doldurulur.
var request = (HttpWebRequest) WebRequest.Create("https://example.com");
var postData = "&username=testing";
postData += "&password=Testing";
postData += "&hotelId=h075-103";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
Daha sonra gönderilecek veri yazılır.byte[] data = ...;
using (stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
Ve post işlemi yapılıp cevap okunur.var response = (HttpWebResponse) request.GetResponse();
if (response.GetResponseStream() != null)
{
string str = new StreamReader(response.GetResponseStream()).ReadToEnd();
...
}
Eğer cevap xml ise şöyle kullanılabilir.XmlDocument doc = new XmlDocument();
doc.LoadXml(str);
Http Get İçin KullanmakBasit bir örnek şöyle. Sınıfın Method, Accept alanları doldurulur. json döndüren bir API'yı çağırmak için şöyle yaparız.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);
request.Method = WebRequestMethods.Http.Get;
request.Accept = "application/json";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Hiç yorum yok:
Yorum Gönder