{"id":33076,"date":"2010-05-29T16:15:44","date_gmt":"2010-05-29T14:15:44","guid":{"rendered":"\/post\/Programsal-Olarak-Bir-ASP-Net-Sayfasina-Veri-Gondermek.aspx"},"modified":"2010-05-29T16:15:44","modified_gmt":"2010-05-29T14:15:44","slug":"programsal-olarak-bir-asp-net-sayfasina-veri-gondermek","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/","title":{"rendered":"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek"},"content":{"rendered":"<p>Kimi zaman yazm\u0131\u015f oldu\u011funuz bir web sitesini test etmek isteyebilirsiniz. Bu testin amac\u0131 sayfan\u0131n beklenildi\u011fi gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 otomatik olarak do\u011frulamak olabilece\u011fi gibi, web sitenizi bir y\u00fck testine tabii tutarak ger\u00e7ek ortamda kald\u0131rabilece\u011fi y\u00fck\u00fc g\u00f6rmek de olabilir. Bu makalemde sizlerle asp.net ile yaz\u0131lm\u0131\u015f bir web sitesine C# ile nas\u0131l veri g\u00f6nderilebilece\u011fini ve test edilebilece\u011fini payla\u015faca\u011f\u0131m.<\/p>\n\n\n\n<p>HTTP protokol\u00fc \u00fczerinden bir web sayfas\u0131na HEAD, GET, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH y\u00f6ntemleri kullan\u0131larak veri g\u00f6nderilebilir. Bu y\u00f6ntemler aras\u0131nda en s\u0131k tercih edilenler ise GET ve POST\u2019tur. Standart bir asp.net web sayfas\u0131, form verilerini bu y\u00f6ntemlerden POST\u2019u kullanarak g\u00f6ndermektedir.<\/p>\n\n\n\n<p>HTTP POST metodunda veri sunucuya iste\u011fin bir par\u00e7as\u0131 olarak iletilmektedir.Verinin sadece URL\u2019nin bir par\u00e7as\u0131 olarak iletildi\u011fi GET metodundan farkl\u0131 olarak POST metodunda istek i\u00e7erisinde mesaj vucudu (message body) da yer almaktad\u0131r; ki bu da de\u011fi\u015fken bir boyutta ve formattaki verinin kolayl\u0131kla sunucuya iletilebilmesine olanak sa\u011flamaktad\u0131r.<\/p>\n\n\n\n<p>Web sayfas\u0131 i\u00e7erisinden yap\u0131lan standart bir POST iste\u011fi genellikle &#8220;<em>application\/x-www-form-urlencoded<\/em>&#8221; i\u00e7erik t\u00fcr\u00fcne sahiptir ve g\u00f6nderilen her bir anahtar-de\u011fer ikilisi birbirinden &#8220;<em>&amp;<\/em>&#8221; karakteri ile ayr\u0131lmaktad\u0131r. Anahtar ve de\u011fer aras\u0131nda ise &#8220;<em>=<\/em>&#8221; karakteri yer almaktad\u0131r. G\u00f6nderilen veri i\u00e7erisindeki bo\u015fluklar &#8220;<em>+<\/em>&#8221; karakteri ile yer de\u011fi\u015ftirdikten sonra da kalan di\u011fer karakterlere URL encoding uygulan\u0131r.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"\"><tbody><tr><th>Anahtar<\/th><th>De\u011fer<\/th><\/tr><tr><td>Adi<\/td><td>Ali Veli<\/td><\/tr><tr><td>Soyadi<\/td><td>\u00d6rnek<\/td><\/tr><tr><td>Sehir<\/td><td>\u0130zmir<\/td><\/tr><tr><td>Ulke<\/td><td>T\u00fcrkiye<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Yukar\u0131daki \u00f6rnek anahtar-de\u011fer ikilileri i\u00e7in olu\u015fturulacak olan POST istek i\u00e7eri\u011fini a\u015fa\u011f\u0131da bulabilirsiniz;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Adi=Ali+Veli&amp;Soyadi=%c3%96rnek&amp;Sehir=%c4%b0zmir&amp;Ulke=T%c3%bcrkiye<\/p><\/blockquote>\n\n\n\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi T\u00fcrk\u00e7e karakterler de encode edilerek POST i\u00e7eri\u011fine eklenmi\u015f durumda.<\/p>\n\n\n\n<p>Pek \u00e7ok web sayfas\u0131na C# kullanarak otomatik veri g\u00f6ndermek asl\u0131nda kolay bir i\u015ftir; <em>HttpWebRequest<\/em> s\u0131n\u0131f\u0131 vas\u0131tas\u0131yla bir istek olu\u015fturarak ve sayfan\u0131n adresini vererek g\u00f6ndermeniz yeterli olmakta. Temelde ASP.Net sayfalar\u0131na veri g\u00f6nderimi de ayn\u0131 yolu izliyor olmas\u0131na kar\u015f\u0131n ba\u015far\u0131l\u0131 bir g\u00f6nderim i\u00e7in bilmeniz gereken ufak bir ka\u00e7 p\u00fcf noktas\u0131 bulunmakta.<\/p>\n\n\n\n<p>ASP.Net web formunun geri bildirimlerde (PostBack) kontrollerin durumunu koruyabilmek\/takip edebilmek ad\u0131na view state y\u00f6ntemini kullanmaktad\u0131r. Kontrollarin geri bildirimlerde hat\u0131rlanmas\u0131 istenen \u00f6zellikleri form i\u00e7erisinde gizli bir de\u011fi\u015fkende saklanmaktad\u0131r. Her geri bildirim de bu de\u011fi\u015fken de\u011feri asp.net taraf\u0131ndan okunarak kontrollerin durumlar\u0131 yeniden ayarlan\u0131r. Form i\u00e7erisinde view state\u2019i tutan bu gizli olarak konumlanm\u0131\u015f olan de\u011fi\u015fkeninin ad\u0131 ise&nbsp; __VIEWSTATE\u2019tir. Programsal olarak yap\u0131lacak bir form g\u00f6nderiminde form i\u00e7erisindeki alanlara ait de\u011ferleri g\u00f6ndermenin yan\u0131 s\u0131ra bu de\u011fi\u015fkeninde g\u00f6nderilmesi gerekmektedir; aksi takdirde g\u00f6nderimimiz ba\u015far\u0131s\u0131z olacakt\u0131r.<\/p>\n\n\n\n<p>Yukar\u0131daki bilgiler \u0131\u015f\u0131\u011f\u0131nda, bir asp.net web sayfas\u0131na programsal olarak veri g\u00f6nderebilmek i\u00e7in \u00f6ncelikle sayfan\u0131n url\u2019si ile birlikte bir <em>HttpWebRequest<\/em> olu\u015fturmal\u0131y\u0131z;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var webRequest = (HttpWebRequest)WebRequest.Create(\"[WEB SAYFASININ ADRESI]\");<\/pre>\n\n\n\n<p>Web request&#8217;im method olarak HTTP POST&#8217;u kullanmal\u0131;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">webRequest.Method = \"POST\";<\/pre>\n\n\n\n<p>\u0130\u00e7erik t\u00fcr\u00fc olarak <code>application\/x-www-form-urlencoded<\/code> kullan\u0131lmal\u0131;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">webRequest.ContentType = \"application\/x-www-form-urlencoded\";<\/pre>\n\n\n\n<p>G\u00f6ndermek istedi\u011finiz string format\u0131ndaki veriyi byte dizisi haline \u00e7evirmelisiniz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var tampon = Encoding.UTF8.GetBytes(\"[G\u00d6NDER\u0130LECEK \u0130\u00c7ER\u0130K]\");<\/pre>\n\n\n\n<p>G\u00f6nderece\u011fimiz i\u00e7eri\u011fin boyutu belirtilmeli;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">webRequest.ContentLength = tampon.Length;<\/pre>\n\n\n\n<p>Son olarak da veri istek stream\u2019i i\u00e7erisine yaz\u0131lmal\u0131 ve yan\u0131t okunmal\u0131d\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using (var istekStream = webRequest.GetRequestStream()) {\n   istekStream.Write(tampon, 0, tampon.Length);\n}\n\nvar yanit = (HttpWebResponse)webRequest.GetResponse();\n\nvar yanitIcerigi = string.Empty;\nusing (var responseStream = yanit.GetResponseStream()) {\n   var streamReader = new StreamReader(responseStream);\n   yanitIcerigi = streamReader.ReadToEnd();\n}<\/pre>\n\n\n\n<p>T\u00fcm kodu bir araya toparlayacak olursak;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var tampon = Encoding.UTF8.GetBytes(gonderilecekVeri);\nvar webRequest = (HttpWebRequest)WebRequest.Create(\"[WEB SAYFASININ ADRESI]\");\n\nwebRequest.Method = \"POST\";\nwebRequest.ContentType = \"application\/x-www-form-urlencoded\";\nwebRequest.ContentLength = tampon.Length;\nwebRequest.Proxy = new WebProxy((string)null, true);\n\nusing (var istekStream = webRequest.GetRequestStream()) {\n   istekStream.Write(tampon, 0, tampon.Length);\n}\n\nvar yanit = (HttpWebResponse)webRequest.GetResponse();\n\nvar yanitIcerigi = string.Empty;\nusing (var responseStream = yanit.GetResponseStream()) {\n   var streamReader = new StreamReader(responseStream);\n   yanitIcerigi = streamReader.ReadToEnd();\n}<\/pre>\n\n\n\n<p>Buraya kadar anlatt\u0131klar\u0131m i\u015fin kolay k\u0131sm\u0131yd\u0131 asl\u0131na bakarsan\u0131z; bu y\u00f6ntemle herhangi bir web sayfas\u0131na HTTP POST metodu ile veri g\u00f6nderebilirsiniz; fakat asp.net sayfalar\u0131na g\u00f6nderece\u011finiz veri i\u00e7erisinde view state\u2019de yer almal\u0131d\u0131r. Rastgelen olu\u015fturaca\u011f\u0131n\u0131z bir view state de\u011ferinin i\u015finizi hi\u00e7 bir \u015fekilde \u00e7\u00f6zmeyece\u011fini ba\u015ftan s\u00f6ylemeliyim. Peki bu durumda view state de\u011feri nas\u0131l olu\u015fturabilirim? Bu sorunun yan\u0131t\u0131 asl\u0131nda basit; view state de\u011ferini siz olu\u015fturmayacaks\u0131n\u0131z.<\/p>\n\n\n\n<p>Web taray\u0131c\u0131n\u0131z \u00fczerinden dola\u015ft\u0131\u011f\u0131n\u0131z, formlar\u0131n\u0131 doldurdu\u011funuz bir asp.net sayfas\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcn. B\u00f6yle bir sayfada ilk iste\u011finizle birlikte bir view state de\u011feri olu\u015fturularak form i\u00e7erisindeki gizli __VIEWSTATE alan\u0131na de\u011fer olarak atan\u0131r, siz sayfadaki kontrollerin de\u011ferlerini de\u011fi\u015ftirdik\u00e7e, formlar\u0131 g\u00f6nderdik\u00e7e bu gizli alan da gidece\u011fi i\u00e7in asp.net hatas\u0131z \u015fekilde view state\u2019i y\u00f6netecektir.<\/p>\n\n\n\n<p>Programsal olarak bir asp.net sayfas\u0131na veri bildirimi yapmak istiyorsak, yapmam\u0131z gereken de asl\u0131nda tam olarak yukar\u0131da \u00f6rnekledi\u011fim web taray\u0131c\u0131s\u0131 davran\u0131\u015f\u0131 taklit etmektir. \u0130lk \u00f6nce bir istek yaparak sayfan\u0131n ve view state\u2019in olu\u015fmas\u0131n\u0131 sa\u011flamal\u0131, ard\u0131ndan bu de\u011ferleri kullanarak form\u2019u doldurup g\u00f6ndermeliyiz.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private string IlkIstek(string sayfaAdresi) {\n   var webClient = new WebClient();\n\n   using (var stream = webClient.OpenRead(sayfaAdresi)) {\n      var streamReader = new StreamReader(stream);\n\n      return streamReader.ReadToEnd();\n   }\n}<\/pre>\n\n\n\n<p>IlkIstek metodu bizim i\u00e7in verdi\u011fimiz bir adrese istek yaparak gelen yan\u0131t\u0131 iletmekte. A\u015fa\u011f\u0131daki AlanDegeriniBul metodu kullan\u0131larak bu yan\u0131t i\u00e7erisindeki istenen herhangi bir input alan\u0131 de\u011feri al\u0131nabilir.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private string AlanDegeriniBul(string sayfaIcerigi, string alanAdi) {\n   var pattern = \"&lt;input.*id=\\\"\" + alanAdi + \"\\\".*value=\\\"(?&lt;deger>.*?)\\\".*\/>\";\n \n   var regex = new Regex(pattern, RegexOptions.IgnoreCase);\n   var match = regex.Match(sayfaIcerigi);\n \n   if (match != null &amp;&amp; match.Groups[\"deger\"].Success &amp;&amp; match.Groups.Count > 0) {\n      return match.Groups[\"deger\"].Value;\n   }\n \n   return string.Empty;\n}<\/pre>\n\n\n\n<p>AlanDegeriniBul metodu verilen alan ad\u0131n\u0131n de\u011ferini bulmak i\u00e7in sayfa i\u00e7eri\u011finde bir d\u00fczenli ifade aramas\u0131 yapmaktad\u0131r. Verilen ifadeye uygun bir grup bulunmas\u0131 durumunda de\u011fer d\u00f6nmekte, aksi durumlarda ise bo\u015f bir string d\u00f6nmektedir.<\/p>\n\n\n\n<p>IlkIstek ve AlanDegeriniBul metodlar\u0131n\u0131n a\u015fa\u011f\u0131daki \u015fekilde kullan\u0131lmas\u0131 sonucunda ihtiyac\u0131m\u0131z olan view state de\u011ferine ula\u015fm\u0131\u015f olaca\u011f\u0131z.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var ilkSayfaIcerigi = IlkIstek(\"[WEB SAYFASININ ADRESI]\");\nvar viewState = AlanDegeriniBul(ilkSayfaIcerigi, \"__VIEWSTATE\");<\/pre>\n\n\n\n<p>Elde etti\u011fimiz bu view state de\u011ferini de \u00f6nceki alanlar\u0131n sonuna ekleyerek iste\u011fimizi ger\u00e7ekle\u015ftirebiliriz.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var ilkSayfaIcerigi = IlkIstek(\"[WEB SAYFASININ ADRESI]\");\nvar viewState = AlanDegeriniBul(ilkSayfaIcerigi, \"__VIEWSTATE\");\n \nvar tampon = Encoding.UTF8.GetBytes(gonderilecekVeri + \"&amp;__VIEWSTATE=\" + HttpUtility.UrlEncode(viewState));\nvar webRequest = (HttpWebRequest)WebRequest.Create(\"[WEB SAYFASININ ADRESI]\");\n \nwebRequest.Method = \"POST\";\nwebRequest.ContentType = \"application\/x-www-form-urlencoded\";\nwebRequest.ContentLength = tampon.Length;\nwebRequest.Proxy = new WebProxy((string)null, true);\n \nusing (var istekStream = webRequest.GetRequestStream()) {\n   istekStream.Write(tampon, 0, tampon.Length);\n}\n \nvar yanit = (HttpWebResponse)webRequest.GetResponse();\n \nvar yanitIcerigi = string.Empty;\nusing (var responseStream = yanit.GetResponseStream()) {\n   var streamReader = new StreamReader(responseStream);\n   yanitIcerigi = streamReader.ReadToEnd();\n}<\/pre>\n\n\n\n<p>Bu y\u00f6ntem kullan\u0131larak olay do\u011frulama (event validation) \u00f6zelli\u011fi aktif edilmemi\u015f t\u00fcm asp.net sayfalar\u0131na veri bildirimi yapabilirsiniz.<\/p>\n\n\n\n<p>Olay do\u011frulama \u00f6zelli\u011fi a\u00e7\u0131lm\u0131\u015f asp.net sayfalar\u0131nda yukar\u0131daki koda ufak bir ekleme yaparak asp.net\u2019in olay do\u011frulamas\u0131nca beklenen __EVENTVALIDATION alan de\u011ferini de bulup g\u00f6ndermemiz gerekli.<\/p>\n\n\n\n<p>Asp.Net oturumlar\u0131 takip edebilmek i\u00e7in her bir oturuma \u00f6zel tekil bir de\u011feri istemciye \u00e7erez olarak iletmekte ve bir sonraki istekte bu bilgiye g\u00f6re ilgili oturumda i\u015flem yapt\u0131rmaktad\u0131r. Bu durumda oturum bilgisinin tutuldu\u011fu ve oturum gerektiren sayfalara veri g\u00f6nderebilmek i\u00e7in bir CookieContainer olu\u015fturup istekle ili\u015fkilendirmelisiniz.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var ilkSayfaIcerigi = IlkIstek(\"[WEB SAYFASININ ADRESI]\");\n \nvar viewState = AlanDegeriniBul(ilkSayfaIcerigi, \"__VIEWSTATE\");\nvar eventValidation = AlanDegeriniBul(ilkSayfaIcerigi, \"__EVENTVALIDATION\");\n \nvar tampon = Encoding.UTF8.GetBytes(gonderilecekVeri +\n                string.Format(\"&amp;__VIEWSTATE={0}&amp;__EVENTVALIDATION={1}\",\n                  HttpUtility.UrlEncode(viewState),\n                  HttpUtility.UrlEncode(eventValidation));\n \nwebRequest = (HttpWebRequest)WebRequest.Create(\"[WEB SAYFASININ ADRESI]\");\n \nwebRequest.Method = \"POST\";\nwebRequest.ContentType = \"application\/x-www-form-urlencoded\";\nwebRequest.ContentLength = tampon.Length;\nwebRequest.Proxy = new WebProxy((string)null, true);\nwebRequest.CookieContainer = new CookieContainer();\n \nusing (var istekStream = webRequest.GetRequestStream()) {\n   istekStream.Write(tampon, 0, tampon.Length);\n}\n \nvar yanit = (HttpWebResponse)webRequest.GetResponse();\n \nvar yanitIcerigi = string.Empty;\nusing (var responseStream = yanit.GetResponseStream()) {\n   var streamReader = new StreamReader(responseStream);\n   yanitIcerigi = streamReader.ReadToEnd();\n}<\/pre>\n\n\n\n<p>Yukar\u0131da yer alan C# kodu yard\u0131m\u0131yla bir asp.net sayfas\u0131na veri g\u00f6nderebiliyor olsakta, tam bir etkile\u015fim yapabilmek i\u00e7in (\u00f6rne\u011fin bir butona bas\u0131lmas\u0131) takip etmemiz gereken bir ka\u00e7 ad\u0131m daha bulunmakta.<\/p>\n\n\n\n<p>Asp.Net web sayfalar\u0131, form \u00fczerindeki bir butona bas\u0131lmas\u0131 gibi, olay geri bildirimlerini sayfa i\u00e7erisinde tan\u0131ml\u0131 olan <code>__doPostBack<\/code> javascript metodunu kullanarak yapmaktad\u0131r. Bu javascript metodunun kodunu inceleyecek olursak;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function __doPostBack(eventTarget, eventArgument) {\n    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {\n        theForm.__EVENTTARGET.value = eventTarget;\n        theForm.__EVENTARGUMENT.value = eventArgument;\n        theForm.submit();\n    }\n}<\/pre>\n\n\n\n<p><code>__doPostBack<\/code> metodu <em>eventTarget<\/em> ve <em>eventArgument<\/em> ad\u0131yla iki parametre kabul etmekte. Bu parametrelerden eventTarget parametresi tetikleyici form bile\u015fenini belirtirken (\u00f6rne\u011fin; butona bas\u0131ld\u0131 ise bas\u0131lan butonun ad\u0131), eventArgument parametresi olay argumanlar\u0131n\u0131 belirtmektedir. Bu parametreler metod i\u00e7erisinde s\u0131ras\u0131yla <code>__EVENTTARGET<\/code> ve <code>__EVENTARGUMENT<\/code> form alanlar\u0131na atanmakta, ard\u0131ndan da form\u2019un sunucuya g\u00f6nderimi yap\u0131lmakta.<\/p>\n\n\n\n<p>Kod i\u00e7erisinden <code>__EVENTTARGET<\/code> parametresine ge\u00e7memiz gereken de\u011feri asp.net web sayfas\u0131n\u0131 bir browserdan a\u00e7arak g\u00f6rebiliriz. Sayfan\u0131n kaynak kodunu a\u00e7arak tetikleyici bile\u015fenin ad\u0131n\u0131 (\u00f6rne\u011fin bir t\u0131klama olay\u0131 i\u00e7in t\u0131klanacak butonun ad\u0131) kopyalanmal\u0131.<\/p>\n\n\n\n<p>A\u015fa\u011f\u0131da \u015fimdiye kadar anlatt\u0131klar\u0131mdan yola \u00e7\u0131karak Visual Studio 2010 ASP.Net Web Application \u015fablonu ile olu\u015fturulmu\u015f bir web uygulamas\u0131na veri g\u00f6ndererek sisteme giri\u015fi sa\u011flayan \u00f6rnek bir uygulama kodunu bulabilirsiniz.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var ilkSayfaIcerigi = IlkIstek(\"http:\/\/localhost:35836\/Account\/Login.aspx\");\n \nvar viewState = AlanDegeriniBul(ilkSayfaIcerigi, \"__VIEWSTATE\");\nvar eventValidation = AlanDegeriniBul(ilkSayfaIcerigi, \"__EVENTVALIDATION\");\n \nvar gonderilecekVeri = string.Format(\"{0}={1}\",\n     HttpUtility.UrlEncode(\"ctl00$MainContent$LoginUser$UserName\"),\n     HttpUtility.UrlEncode(\"KULLANICI ADI\"));\ngonderilecekVeri += string.Format(\"&amp;{0}={1}\",\n     HttpUtility.UrlEncode(\"ctl00$MainContent$LoginUser$Password\"),\n     HttpUtility.UrlEncode(\"KULLANICI \u015e\u0130FRES\u0130\"));\ngonderilecekVeri += string.Format(\"&amp;{0}={1}\",\n     HttpUtility.UrlEncode(\"__EVENTTARGET\"),\n     HttpUtility.UrlEncode(\"ctl00$MainContent$LoginUser$LoginButton\"));\ngonderilecekVeri += string.Format(\"&amp;{0}={1}\",\n     HttpUtility.UrlEncode(\"__EVENTARGUMENT\"),\n     HttpUtility.UrlEncode(string.Empty));\ngonderilecekVeri += string.Format(\"&amp;{0}={1}\",\n     HttpUtility.UrlEncode(\"__VIEWSTATE\"),\n     HttpUtility.UrlEncode(viewState));\ngonderilecekVeri += string.Format(\"&amp;{0}={1}\",\n     HttpUtility.UrlEncode(\"__EVENTVALIDATION\"),\n     HttpUtility.UrlEncode(eventValidation));\n \nvar tampon = Encoding.UTF8.GetBytes(gonderilecekVeri);\n \nwebRequest = (HttpWebRequest)WebRequest.Create(\"http:\/\/localhost:35836\/Account\/Login.aspx\");\n \nwebRequest.Method = \"POST\";\nwebRequest.ContentType = \"application\/x-www-form-urlencoded\";\nwebRequest.ContentLength = tampon.Length;\nwebRequest.Proxy = new WebProxy((string)null, true);\nwebRequest.CookieContainer = new CookieContainer();\n \nusing (var istekStream = webRequest.GetRequestStream()) {\n   istekStream.Write(tampon, 0, tampon.Length);\n}\n \nvar yanit = (HttpWebResponse)webRequest.GetResponse();\n \nvar yanitIcerigi = string.Empty;\nusing (var responseStream = yanit.GetResponseStream()) {\n   var streamReader = new StreamReader(responseStream);\n   yanitIcerigi = streamReader.ReadToEnd();\n}<\/pre>\n\n\n\n<p><em>Bu \u00f6rnek veri g\u00f6nderim kodu, i\u00e7eri\u011fi hi\u00e7 de\u011fi\u015ftirilmemi\u015f ve 35836 portundan hizmet veren bir ASP.Net Web Application i\u00e7in haz\u0131rlanm\u0131\u015ft\u0131r.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-table postUpdate\"><table class=\"\"><tbody><tr><td><figure><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; margin: 0px 0px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;\" title=\"Info\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/11\/Info.png\" alt=\"Info\" width=\"32\" height=\"32\" border=\"0\"><\/figure><\/td><td>\n<p align=\"justify\">&nbsp;&nbsp; <strong>G\u00fcncelleme, 03 \u015eubat 2012 :<\/strong> Bu konu hakk\u0131nda ald\u0131\u011f\u0131m yo\u011fun \u0131srarlar sonras\u0131nda bir webiner d\u00fczenlemeye karar verdim. NedirTv.com \u00e7at\u0131s\u0131 alt\u0131nda <strong>27 \u015eubat 2012<\/strong> Pazartesi g\u00fcn\u00fc saat <strong>21:00<\/strong>&#8216;da d\u00fczenlenecek olan bu webiner&#8217;e ba\u015flamas\u0131ndan yar\u0131m saat \u00f6ncesinden itibaren <a href=\"https:\/\/www.livemeeting.com\/cc\/mvp\/join?id=68WBPH&amp;role=attend\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.livemeeting.com\/cc\/mvp\/join?id=68WBPH&amp;role=attend<\/a> adresinden kat\u0131labilirsiniz.<\/p>\n<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table postUpdate\"><table class=\"\"><tbody><tr><td><figure><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; margin: 0px 0px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;\" title=\"Info\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/11\/Info.png\" alt=\"Info\" width=\"32\" height=\"32\" border=\"0\"><\/figure><\/td><td>\n<p align=\"justify\">&nbsp;&nbsp; <strong>G\u00fcncelleme, 03 Mart 2012 :<\/strong> Bu konu hakk\u0131nda NedirTv.com \u00e7at\u0131s\u0131 alt\u0131nda d\u00fczenlenen webiner kayd\u0131 ve powerpoint sunusuna <a href=\"\/en\/?p=9777\">buradan<\/a> ula\u015fabilirsiniz.<\/p>\n<\/td><\/tr><\/tbody><\/table><\/figure>","protected":false},"excerpt":{"rendered":"<p>Kimi zaman yazm\u0131\u015f oldu\u011funuz bir web sitesini test etmek isteyebilirsiniz. Bu testin amac\u0131 sayfan\u0131n beklenildi\u011fi gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 otomatik olarak do\u011frulamak olabilece\u011fi gibi, web sitenizi bir y\u00fck testine tabii tutarak ger\u00e7ek ortamda kald\u0131rabilece\u011fi y\u00fck\u00fc g\u00f6rmek de olabilir. Bu makalemde sizlerle asp.net ile yaz\u0131lm\u0131\u015f bir web sitesine C# ile nas\u0131l veri g\u00f6nderilebilece\u011fini ve test edilebilece\u011fini payla\u015faca\u011f\u0131m. HTTP&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":16804,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[99,28],"tags":[98,41],"class_list":["post-33076","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aspnet","category-turkce","tag-asp-net","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek - Fatih Boy<\/title>\n<meta name=\"description\" content=\"Asp.Net ile geli\u015ftirilmi\u015f bir web sayfas\u0131na C# ile veri g\u00f6ndermek i\u00e7in takip edilmesi gereken ad\u0131mlar\u0131 bu makalemde bulabilirsiniz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"Asp.Net ile geli\u015ftirilmi\u015f bir web sayfas\u0131na C# ile veri g\u00f6ndermek i\u00e7in takip edilmesi gereken ad\u0131mlar\u0131 bu makalemde bulabilirsiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2010-05-29T14:15:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek\",\"datePublished\":\"2010-05-29T14:15:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/\"},\"wordCount\":1401,\"commentCount\":26,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg\",\"keywords\":[\"Asp.Net\",\"C#\"],\"articleSection\":[\"Asp.Net\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/\",\"url\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/\",\"name\":\"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg\",\"datePublished\":\"2010-05-29T14:15:44+00:00\",\"description\":\"Asp.Net ile geli\u015ftirilmi\u015f bir web sayfas\u0131na C# ile veri g\u00f6ndermek i\u00e7in takip edilmesi gereken ad\u0131mlar\u0131 bu makalemde bulabilirsiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg\",\"width\":1024,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek - Fatih Boy","description":"Asp.Net ile geli\u015ftirilmi\u015f bir web sayfas\u0131na C# ile veri g\u00f6ndermek i\u00e7in takip edilmesi gereken ad\u0131mlar\u0131 bu makalemde bulabilirsiniz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/","og_locale":"en_US","og_type":"article","og_title":"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek - Fatih Boy","og_description":"Asp.Net ile geli\u015ftirilmi\u015f bir web sayfas\u0131na C# ile veri g\u00f6ndermek i\u00e7in takip edilmesi gereken ad\u0131mlar\u0131 bu makalemde bulabilirsiniz.","og_url":"https:\/\/fatihboy.com\/en\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/","og_site_name":"Fatih Boy","article_published_time":"2010-05-29T14:15:44+00:00","og_image":[{"width":1024,"height":630,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek","datePublished":"2010-05-29T14:15:44+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/"},"wordCount":1401,"commentCount":26,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg","keywords":["Asp.Net","C#"],"articleSection":["Asp.Net","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/","url":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/","name":"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg","datePublished":"2010-05-29T14:15:44+00:00","description":"Asp.Net ile geli\u015ftirilmi\u015f bir web sayfas\u0131na C# ile veri g\u00f6ndermek i\u00e7in takip edilmesi gereken ad\u0131mlar\u0131 bu makalemde bulabilirsiniz.","breadcrumb":{"@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/05\/903.jpg","width":1024,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/programsal-olarak-bir-asp-net-sayfasina-veri-gondermek\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Programsal Olarak Bir ASP.Net Sayfas\u0131na Veri G\u00f6ndermek"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=33076"}],"version-history":[{"count":0,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33076\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/16804"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=33076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=33076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=33076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}