HttpPost, API Post Etmek ve Response Yorumlama

Merhabalar,

Kaynakları bol ancak temiz kodu kısıtlı olan bir konuya kısaca değinelim istiyorum. Elimizde bulunan bir API adresine bir Object’i (Class olabilir) post edip, oradan gelen yanıtı da istediğimiz formata çevirip yakalayabileceğimiz bir fonksiyon. Ben bu methoda kısaca SendRequest diyorum.


public static T SendRequest<T>(string address, string dataObject)
{
var request = (HttpWebRequest)WebRequest.Create("" + address);
request.Method = "POST";
var encoding = new UTF8Encoding();

var byteArray = encoding.GetBytes(dataObject);
request.ContentLength = byteArray.Length;
request.ContentType = @"application/json";

using (var dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}

var response = (HttpWebResponse)request.GetResponse();

T data;
using (var sr = new StreamReader(response.GetResponseStream()))
{
string text = sr.ReadToEnd();
data = JsonConvert.DeserializeObject<T>(text);
}

return data;
}

Kullanımı ise aşağıdaki şekilde;


string request = Newtonsoft.Json.JsonConvert.SerializeObject(requestModelim);

CustomerResponseModel result = SendRequest<CustomerResponseModel>(address, request);

Bilindiği gibi T olarak belirttiğimiz değişken bir generic değişken. Dolayısı ile burada methodu çağırırken <T> olarak belirttiğimiz alana istediğimiz tip değişkeni verebiliriz.

Bu şekilde data’mız address değişkenine belirtmiş olduğumuz URL’e post edilecek ve buradan dönen cevapta yine “data = JsonConvert.DeserializeObject<T>(text);” satırıyla parse edilerek istediğimiz değişken tipinde bize geri döndürülecek.

Dolayısı ile buradan ne anlıyoruz. Tabii ki projemize nuget ‘ten Newtonsoft ‘u eklemeyi unutmamayı. 🙂

Sorunuz olursa yorum kısmından bana yazabilirsiniz…


                                                                                                    
Share this Story

Related Posts

Kimler Neler Demiş?

avatar
  Subscribe  
Bildir

Search