Ana içeriğe atla

Java Ağ Programlama - 4

Serinin 4. ile yazısı ile devam ediyoruz. Bugün, artık Web bağlantıları ile ilgili son yazıyı yazıp, soket programlamaya geçeceğiz. Zira Java'da ağ programlama ile kastedilen şey soket programlamadır aslında. Web sitesine bağlantımız dahi soket programlama üzerinden gerçekleşir. Bu yüzden bu yazıda da son kez Web bağlantılarından bahsedip, artık bilgisayarlar ve uygulamalar arası bağlantı işlemlerine geçeceğiz. Web bağlantıları ile kastettiğim şey, bir web sitesine bağlanmak. Neyse, yazıya geçelim.

Bugün ki yazıda ele alacağımız konu, HttpURLConnection sınıfı ve bir bağlantı nesnesinin özelliklerini değiştirebilmek. Bazı yabancı kavramlar karşınıza gelebilir, bunları da açıklamaya çalışacağım. Şimdi, ilk olarak bir siteye bağlandığımız zaman, bizim bot olup olmadığımızı anlamak için bazı bilgilerimize bakarlar. Eğer bu bilgiler tanımsız yada uygun değilse, bağlantıyı kabul etmeyebilirler. Bu bilgilerden birisi user-agent bilgisidir. User-agent, tarayıcıların sunuculara istek gönderirken barındırdığı bir string'dir. Web sunucuları, bu bilgiye bakarak isteğin hangi işletim sisteminden ve hangi browser üzerinden geldiğini anlayabilirler. Web sitesine bağlanmadan önce user-agent bilgisini değiştirmek için, setRequestProperty() metodunu kullanacağız.

Aşağıdaki kodu dikkatli bir şekilde inceleyelim



Burada user-agent bilgisinin yanına eklediğim "Mozilla" ile başlayan kısım, Firefox'un 40. sürümünün user-agent bilgisidir. Diğer tüm tarayıcıların yada sistemlerin user-agent bilgisini görmek için, http://www.useragentstring.com/pages/useragentstring.php adresine bakabilirsiniz.

Elbette sadece user-agent bilgisini değiştirmiyoruz. Daha başka bilgileri de değiştirebiliriz. Ancak biz sadece şimdilik bu işlemin nasıl yapıldığını bilelim yeter.

Bir diğer konu ise, önceki yazılarda bahsettiğim HttpURLConnection sınıfı. Bu sınıfı kullanarak da web sitelerine bağlanabiliriz. URLConnection ile yaptığımız her şeyi yapabiliriz. Zaten HttpURLConnection sınıfı, URLConnection sınıfından extend edilmiştir. Extra olarak bazı metotlar vardır.Örneğin içerisinde setRequestMethod() metodunu barındırır. Bu metot ile web sayfalarına isteğin hangi metot ile gideceğini belirleyebiliriz. Mesela GET yerine POST metodu ile istek göndermek istersek, bu metodu kullanabiliriz.

Daha fazla bilgi almak isterseniz, https://docs.oracle.com/javase/8/docs/api/java/net/HttpURLConnection.html adresine bakabilirsiniz.

Sormak istediğiniz sorularınız varsa yorumda sorabilirsiniz. Bir sonraki yazıda buluşmak üzere Allah'a emanet olun...

Yorumlar

Bu blogdaki popüler yayınlar

Python Subprocess

subprocess modülü, yeni bir process oluşturmayı sağlayan, bunların girdi-çıktılarını ele alma imkânı veren ve dönüş kodlarını almayı sağlayan bir modüldür. Yani daha basit bir şekilde, program içinde program çalıştırmaya imkan veren bir modüldür. Subprocess Modülünün Kullanımı subprocess basit bazı process'leri kullanmak için birkaç tane fonksiyon sunuyor. Daha karmaşık bir process çalıştırmak isterseniz, Popen sınıfını kullanabilirsiniz. Bunlara detaylı bir şekilde değinmeye çalışacağız. Şimdi basit fonksiyonları inceleyelim

Infix to postfix dönüşümü

Infix to postfix dönüşümü, operatorün ortada olduğu a+b yazım şeklini operatorün sonda olduğu ab+ yazım şekline dönüştürme işlemidir. Bu yazıda iki şekilde dönüşümden bahsedeceğim:   1) Stack yapısı kullanarak dönüştürme 2) Kağıt üstünde el ile dönüştürme    Infix gösterimi, bizler için kolay bir gösterim olsa da makineler için öyle değildir. İfadeyi okurken a + b * c işleminde önce b ile c yi çarpıp sonra da a ile toplamayı kolay bir şekilde yapabiliriz çünkü bizim ifadeyi sıra ile adım adım giderek okuma zorunluluğumuz yok. Önce b*c nin öncelikle olduğunu görerek oradan başlar, sonra a ile kolayca toplarız.

Java Process Çıktısı Türkçe Karakter Sorunu

Merhaba arkadaşlar. Bildiğiniz gibi Java'da bir process oluşturmak için ProcessBuilder sınıfından yararlanıyoruz. Oluşturduğumuz process eğer çıktı üretiyorsa bu çıktıyı okuyabiliyoruz. Ancak bu çıktı Türkçe karakter içeriyorsa, biz bu çıktıyı okuduğumuz zaman düzgün bir şekilde elde edemiyoruz. Daha doğrusu kodlama Türkçe'ye göre yapılmadığı için (ş,ç,ğ,ı,ü,ö) karakterleri farklı bir şekilde ekranda görüntüleniyor. Öncelikle sorunu gözle görelim ve bunu çözmeye çalışalım. Aşağıda ping atmak üzere yazdığım bir program var. Ping atabilmek için bir process oluşturuyorum ve çıktıları ekrana yazıyorum. İşletim sistemimi Türkçe kullandığım için çıktı da Türkçe ifadeler geçiyor.