Blog Single

Merhabalar, bu yazımda PHP ile JSON kullanmayı, JSON ile Web Servisleri arasında haberleşmenin nasıl sağlanabileceğine ve farklı Yazılım Dilleri ve Yazılım Platformlarında herhangi bir yazılım dili ile nasıl haberleşilebilir örneklerine değinmiş olacağım. Yararlı olması dileğiyle.

Öncelikle, JSON nedir ile başlayalım, bilmeyenler yada tam manasıyla anlamış olmayanlar olabilir.

  • JSON, JavaScript Object Notation kelimelerinin kısaltmasından oluşmuştur.
  • İnsanlar tarafından okunabilen bir veri değişimi biçimidir. XML ile JavaScript çok da etkileşimli kullanılamamasından dolayı tercih edilerek oluşturulmuş bir dildir.
  • JSON ile oluşturulmuş veriler, diziler halinde belirli verilerin parçalanarak, gerekli durumlarda, gerekli yerlerde kullanılabilmesine olanak sağlar.
  • JSON verileri farklı yazılım dilleri ve farklı yazılım platformları ile okunabilinmektedir.
  • JSON dosyaları dahili (internet bağlantısı gerektirmeyen) dosyalar olabileceği gibi, harici (internet bağlantısı gerektiren) dosyalar da olabilir.
  • Çoğunlukla dinamik yapıda kullanılan Harici JSON dosyaları, günümüzde çoğunlukla Web Servisi şeklinde çalışmaktadır.

JSON verileri, Aşağıdaki veri tiplerini desteklemektedir;

  • Number
  • String
  • Boolean
  • Array
  • Object
  • null

JSON verilerini nerelerde kullanabileceğinize örnek verecek olursak;

  • Bir web sitenin web servisi aracılığı ile mobil uygulamaya güvenli veri transferleri sağlamak.
  • Bir web servisi ile, başka bir web servisini konuşturmak.
  • Bir cihaz ile web servisini konuşturmak. (Yiyecek/içecek otomatları, Çay/Kahve makineleri, ATM, Turnike geçiş sistemleri vs. gibi)
  • Bir web siteden, farklı bir web siteye veri transferleri yapmak.
  • A cihazından, B cihazına, N servisi ile veri taşımak.

PHP JSON

PHP input ile, Android Rest PUT (Restful) örneğine değinelim;

header('Content-Type: text/html; charset=utf-8');
mysql_connect("localhost","root","")or die("not connected"); 

mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET utf8');
mysql_select_db("testdb");
$json = file_get_contents('php://input'); //Şuanda web servisine Resful ile gelen verileri çekiyoruz.
$obj = json_decode($json);
//Android tarafında, Rest put methodunda verdiğimiz key değerlerini kullanarak , çektiğiniz değerleri veritabanına insert etmek için kullanabilirsiniz.
$insertSql = "INSERT INTO users (id,name) VALUES (NULL,'".$obj->{'name'}."')";

mysql_query($insertSql);
mysql_close();

?>

Diğer bir örneğimizde ise, veritabanından ilgili tablodan verileri json ile çekerek istediğimiz yerde okutabilir ve yorumlatabiliriz.

JSON ile veritabanından veri okuma ve gösterme;

header('Content-Type: text/html; charset=utf-8'); 

mysql_connect("localhost","root","")or die("not connected");
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET utf8');
mysql_select_db("testdb");
 
$result=mysql_query("select * from users limit 1");
$row=mysql_fetch_assoc($result);
 
//Veritabanından çekilen datayı json ile encode ederek, Web servisine iletiyorum.
$outputArr = array();
$outputArr['getJson'] = $row;
print_r(json_encode($outputArr));
mysql_close();
?>

Farklı bir örneğimizde ise, a sitesinden b sitesine veri taşımadan bahsedelim.

Bu örneğimiz ise "Posting JSON Data with PHP" olarak geçiyor.

Veriyi gönderen siteye jsonPost.php adlı bir dosya açın ve içeriğine aşağıdaki kodları yazın;

$data = array('name' => 'Şerif', 'surname' => 'GÜNGÖR', 'age' => '21');
$data_string = json_encode($data);

$result = file_get_contents('http://verigonderileceksite.com/postData.php', null, stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-Type: application/json' . " "
. 'Content-Length: ' . strlen($data_string) . " ",
'content' => $data_string,
),
)));

echo $result;

?>

Veri göndereceğiniz sitenin kontrolü sizin elinizde olmalı, veri göndereceğiniz siteye postData.php açın ve içine aşağıdakileri yazın;

$body = @file_get_contents('php://input');
echo $body;
echo "sent ok !";
?>

Kodu açıklayacak olursak, veri gönderen site ilgili dataları dizi şeklinde, veriyi alacak olan siteye yolluyor, herhangi bir problem yaşanmadıysa veriyi alan siteden cevap dönüyor.

Yararlı olması dileğiyle.

Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın