<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ftoptas blog &#187; get</title>
	<atom:link href="http://ftoptas.com/tag/get/feed/" rel="self" type="application/rss+xml" />
	<link>http://ftoptas.com</link>
	<description>[beta]</description>
	<lastBuildDate>Mon, 30 Jan 2012 20:19:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Python ile HTTP POST/GET Metodu Kullanma</title>
		<link>http://ftoptas.com/python-ile-http-postget-metodu-kullanma/</link>
		<comments>http://ftoptas.com/python-ile-http-postget-metodu-kullanma/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 08:15:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[get]]></category>
		<category><![CDATA[httplib]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[post metodu]]></category>
		<category><![CDATA[python dersleri]]></category>
		<category><![CDATA[urllib]]></category>

		<guid isPermaLink="false">http://ftoptas.com/?p=239</guid>
		<description><![CDATA[Elimizde bazı veriler var ve]]></description>
			<content:encoded><![CDATA[<p>Elimizde bazı veriler var ve bunları POST veya GET metoduyla biyerlere göndermemiz lazım. Yanımızda Python betiklerini çalıştırabilicek bir cihaz (misal: herhangi bir bilgisayar -işletim sistemi farketmez- veya s60 telefon) varsa sorun yok. Hemen kodları yazmaya başlayabilirsiniz. İlk örneğimizde sadece string verileri göndereceğiz. Mesela herhangi bir siteye form bilgilerini giriyoruz.</p>
<pre class="python">import urllib, httplib

veriler = urllib.urlencode({'veri':'herhangi bir veri'})
headers = {"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
baglanti = httplib.HttpConnection("ftoptas.com")
baglanti.request("POST","/ornekform/gonder/",veriler,headers)
cevap = baglanti.getresponse()
baglanti.close()</pre>
<p><span id="more-239"></span></p>
<p>Önce kullanacağımız kütüphaneleri çağırıyoruz. Biz burada urllib ve httplib kütüphanelerini kullandık. Ardından göndereceğimiz verileri belirledik.    Gördüğünüz gibi verileri dictionary şeklinde yazıyoruz. İlk değer verinin ismi ikincisi de değeri oluyor. headers parametresiyle de bu bağlantının nereden geldiğini belirtiyoruz. Sunucu bağlantının nereden geldiğini header bilgilerinden anlar. Dolayısıyla buraya yazacağımız değerlerle bağlantının bir web tarayıcısından geliyormuş gibi görünmesini sağlayabiliriz. Bunun nedeni ise google gibi bazı siteler  header bilgilerine göre cevap vermektedir. Bir nevi sunucuyu kandırmış gibi oluyoruz. <span style="color: #0000ff;">baglanti</span> isminde bir bağlantı yapıyoruz ve yaptığımız bağlantıyla <span style="color: #0000ff;">POST</span> metodunu kullanarak <span style="color: #0000ff;">ftoptas.com/ornekform/gonder/</span> adresine bilgileri gönderiyoruz. Eğer bu göndermenin ardında bir cevap dönüyorsa bunu da <span style="color: #0000ff;">getresponse()</span> fonksiyonuyla alıyoruz.  Bu şekilde gönderdiğimiz bilgileri okumak için sunucumuzu da PHP ile şu şekilde kodlarız:</p>
<pre class="php">$dosyaadi = "deneme.txt"
// verileri yazacağımız dosyayı açıyoruz
$dosya = fopen($dosyaadi,'a+')
// POST metoduyla gelen verileri okuyoruz
$veri = $_POST['veri']
// okuduğumuz verileri dosyaya yazdırıyoruz
fwrite($dosya, $veri, strlen($veri))
// dosyayı kapatıyoruz
fclose($dosya)
// cevap olarak istemciye dönecek veri
echo "veri başarıyla iletildi."</pre>
<p>Eğer string değil de bir dosya göndermek istiyorsak bunu da şöyle yapabiliriz:</p>
<pre class="python">dosya = open(dosyaadi,'r')
veri = dosya.read()
dosya.close()
veri = veri.encode("zlib")
headers = {"Content-type":"application/x-gzip","Accept":"text/plain"}
baglanti = httplib.HttpConnection(sunucu)
baglanti.request("POST",yol,veri,headers)
cevap = baglanti.getresponse()
cevap_dosya = cevap.read()
baglanti.close()</pre>
<p>Burada ise okuduğumuz dosyayi read() yöntemiyle stringe dönüştürüyoruz. Bu stringi de zlib ile kodlayarak sıkıştırılmış bir dosya haline getiriyoruz. Dolayısıyla header bilgilerinde bunun sıkıştırılmış dosya biçimi olduğunu belirtiyoruz. Geri kalan kısmı ilk örnekte yaptığımız gibi oluyor. cevap_dosya ise veri gönderme sonucunda sunucun bize verdiği cevabın stringe dönüşmüş halidir. Bu yöntemle gönderilmiş verileri PHP sunucumuzda okumak için aşağıdaki gibi kodlayalım.</p>
<pre class="php">// gelen veriyi okuyoruz
$veri = file_get_contents('php://input')
// sıkıştırılmış olarak geldiği için gelen veriyi
// tekrar eski haline getirmek için uncompress yapıyoruz
$dosya = gzuncompress($veri)
// eğer veri yoksa -1 değer döndürüyoruz
if (!$dosya){
echo -1
die()
}
// veriyi kaydedeceğimiz dosyanın ismini belirtiyoruz.
// dosya ismi unique yani seçiliyor yani aynı isimde 2 farklı dosya
// bu kısma herhangi bir dosya ismi de verebilirsiniz.
$uid = uniqid()
$dosyaadi = "$uid.tmp"
// dosyayı oluşturuyoruz
$yaz = fopen($dosyaadi,'wb')
// verileri dosyaya yazıyoruz
fputs($yaz,$dosya,strlen($dosya))
// dosyayı kapatıp cevap dönüyoruz
fclose($yaz)
echo "dosya iletildi."</pre>
<p>Bu kodların tamamı PyS60&#8242;da da çalışmaktadır. Yani telefondan da bunları yapabiliriz.  Şimdi yaptığımız iki örnekte sunucumuzu PHP ile programladık. Bir sonraki yazımda Python sunucuları kullanacağız. Bunun için de Google App Engine üzerinde Django kurup çalıştıracağız. Yani hem sunucu hem istemci tamamiyle Python ile yazılmış olacak.</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-ile-http-postget-metodu-kullanma/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

