Giriş
Şu satırları dahil ederiz.
HttpClient sınıfı WebClient sınıfı ile aynı kolaylıkta. Ancak await metodları ile daha rahat kullanılabildiği için tercih ediliyor. Bu sınıf .Net 4.5 ile geliyor. Açıklaması şöyle
Şu satırları dahil ederiz.
using System.Net.Http;
using System.Net.Http.Headers;
HttpClient is now the preferred way in .NET Core 3.1.Kullanım
Kısaca şöyle yapıyoruz.
Şöyle yaparız.
Örnek
Şöyle yaparız
Şöyle yaparız.
Default kurulan nesneye bağlanacağı adresi atamak için kullanılır.
Örnek
Şöyle yaparız.
Bir Task nesnesi döner. Veriyi binary stream olarak almak için şöyle yaparız.
Bir Task nesnesi döner. Şöyle yaparız.
Eğer istersek bellek alanının büyüklüğünü kontol edebiliriz.
private async void MyMethod(...)
{
var uri = new Uri (...);
var http = new HttpClient();
var response = await http.GetStringAsync(uri);
...
}
ConstructorŞöyle yaparız.
using (HttpClient httpClient = new HttpClient()){
...
}
Constructor - HttpClientHandler
Örnek
Şöyle yaparız
using var httpClient = new HttpClient(new HttpClientHandler())
{
BaseAddress = new Uri(_baseUrl)
};
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", accessToken);
var response = await httpClient.GetAsync("/path", cancellationToken);
Constructor - HttpClientHandler + WebProxy
Şöyle yaparız
var handler = new HttpClientHandler();
handler.Proxy = new WebProxy(proxy, true);
if (handler.SupportsAutomaticDecompression)
{
handler.AutomaticDecompression=DecompressionMethods.GZip|DecompressionMethods.Deflate;
}
var client = new HttpClient(handler)
{
Timeout = TimeSpan.FromSeconds(10)
};
Örnek - HttpClientHandler + CredentialsŞöyle yaparız.
var uri = new Uri("http://localhost:15001");
var credentialsCache = new CredentialCache {
{ uri, "NTLM", CredentialCache.DefaultNetworkCredentials } };
var handler = new HttpClientHandler { Credentials = credentialsCache };
var httpClient = new HttpClient(handler) { BaseAddress = uri,
Timeout = new TimeSpan(0, 0, 10) };
httpClient.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = httpClient.GetAsync("api/MyMethod").Result;
BaseAddress alanıDefault kurulan nesneye bağlanacağı adresi atamak için kullanılır.
Örnek
Şöyle yaparız.
httpClient.BaseAddress = new Uri(...);
Örnek
Şöyle yaparız.
Şöyle yaparız.
HttpRequestHeaders tipindendir.
Şöyle yaparız.
client.BaseAddress = new Uri("http://localhost:8080");
HttpResponseMessage resp = client.GetAsync("api/foreman?test1=1&test2=2").Result;
ÖrnekŞöyle yaparız.
string baseAddress = ...;
var httpClient = new HttpClient {
BaseAddress = new Uri(baseAddress)
};
DefaultRequestHeaders AlanıHttpRequestHeaders tipindendir.
GetAsync metodu
Şöyle yaparız.Sonucun başarılı olduğunu şöyle kontrol ederiz.HttpResponseMessage httpResponse
= await httpClient
.GetAsync("...");
httpResponse.EnsureSuccessStatusCode();
Eğer bu işlemden sonra veriyi string olarak almak istersek şöyle yaparız ancak bunun yerine direkt GetStringAsync metodunu kullanmak daha iyi.var content = await httpResponse.Content.ReadAsStringAsync();
Eğer bu işlemden sonra veriyi binary stream olarak almak istersek şöyle yaparız ancak bunun yerine direkt GetStreamAsync metodunu kullanmak daha iyi.var responseStream = await httpResponse
.Content.ReadAsStreamAsync();
GetStreamAsync metoduBir Task nesnesi döner. Veriyi binary stream olarak almak için şöyle yaparız.
Stream str = httpClient
.GetStreamAsync(uri).Result;
GetStringAsync metoduBir Task nesnesi döner. Şöyle yaparız.
HttpClient httpClient = new HttpClient();
var content = await httpClient.GetStringAsync(new Uri(baseAddress));
MaxResponseContentBufferSize alanıEğer istersek bellek alanının büyüklüğünü kontol edebiliriz.
httpClient.MaxResponseContentBufferSize = Int32.MaxValue;
PostAsync metodu
HttpStringContent göndermek için kullanılır. Şöyle yaparız.
Şöyle yaparız.
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://testurl/");
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("Identification[api_key]", "somekey"),
...
});
var result = client.PostAsync("", content).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;
}
Timeout AlanıŞöyle yaparız.
httpClient.Timeout = new TimeSpan(0, 0, 5);
Hiç yorum yok:
Yorum Gönder