Curl ile XML veya istediğiniz değerleri Post etmek

Standard

Herkese Selam,

Bir çoğumuz normalde ajax ile post işlemi vs. yapıyoruz. Tabi js kullanarak. Peki ya bu durum PHP tarafında nasıl mümkün?
Sayfanızı yenilemeden bi yere post etmek ve sonuç okumak istiyorsunuz diyelim ki?
bunun için size curl ile post işlemini basitçe göstereceğim..

CURL ile genelde bankacılıkta 3D secure kullanılmıyorsa bankanın apisi ile iletişim kururken karşılaşırsınız. Tabi bunun dışında Turkcell, yemeksepeti vb. firmaların oluşturdukları servislere bağlanırkende işinize yarayacaktır..

Örnek zaten açıklayıcı, aralara yorum da yazdım.. Yeterli olacağını umuyorum..

$url = $config->url."/post.php";
            $fields = array(
                'urun_id' => $urunObj->urun_id,
                'beden_id' => $urunObj->beden_id,
                'adet' => $urunObj->adet
            );

            foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
            rtrim($fields_string, '&');

            //bağlantımızı açalım
            $ch = curl_init();

            curl_setopt($ch,CURLOPT_URL, $url);
            curl_setopt($ch,CURLOPT_POST, count($fields));
            curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

            //post işlemini gerçekleştirelim
            $result = curl_exec($ch);

            //bağlantımızı kapatalım
            curl_close($ch);

            print_r($result);

Veya bir servise XML post etmek istiyorsunuz diyelim:

<?php 
$xml_data ='<onurcanalp>'.
                '<user>'.
                    '<id>1</id>'.
                    '<name>onurcanalp</name>'.       
                '</user>'.
                '<makale>'.
                    '<id>1</id>'.
                    '<title>Curl ile Post işlemi</title>'.
                    '<detail>bla bla bla işte..</detail>'.
                '</makale>'.  
            '</onurcanalp>';
$url = "https://www.onurcanalp.com/servis_path/";
 
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
?>

Yeterli olmuştur diye düşünüyorum, kolay gelsin..

Print Friendly, PDF & Email
Facebooktwitterlinkedin

6 thoughts on “Curl ile XML veya istediğiniz değerleri Post etmek

  1. Burak

    Ben LUA dilinde yazılım geliştiriyorum. Fakat kullandığım dilin HTTP/XML post etme gibi kabiliyeti yok maalesef. Fakat Windows üzerinde tek başına çalışan bir tool (.exe) olsa ve bir parametre ile çalıştırılsa ve XML post ettirsem diye düşündüm o yüzden. Amacım geliştirdiğim yazılım üzerinden SMS göndermek. Fakat HTTP/XML post nedir ne değildir bu konularla ilgili hiçbir bilgim yok. Araştırırken bu sayfa karşıma çıktı. Curl nedir nasıl çalışır bunun hakkında da bir fikrim yok. Bana yardımcı olabilir misin? Ben Mutlucell kullanıyorum ve POST işlemleri için gereken herşey API yardım sayfasında yazıyor:

    https://www.mutlucell.com.tr/api/

    Bana yardımcı olabilirsen çok mutlu olurum. İyi çalışmalar…

    • Onur Canalp

      Merhaba, zaten şu an okuduğunuz yazıya kadar gelmişsiniz ve karşınızda gayet açık basit bir örnek var. Bence ben size yeteri kadar yardımcı olmuşum, ışığa gitmek sizin işiniz 😉
      Ayrıca burada PHP ile anlattım ben cURL ile post işlemini, siz bence vb.net c# ne ile yapacaksanız onunla alakalı bir örnek bulun derim.
      Kolay gelsin…

  2. Curl Öğreniyorum

    a.php den b.php ye post ettim diyelim.
    b.php de nasıl alabilirim değerleri ? $fields[‘urun_id’] tarzında yazdım ama çözemedim onun için de örnek verir misiniz?

    • Onur Canalp

      Ohoo armut hayat boyu pişip ağzınıza düşmeyecek, azıcık araştırın. Google gibi bi imkan var elinizde!
      R10, Donanım haber gibi forumlara takılmanızı öneririm.

Onur Canalp için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir