Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
NetHTTPClient.Post
#1
iyi günler hayırlı ramazanlar. bir konuda yardımınıza ihtiyacım old. bir projem var. başlıktanda anlaşıldığı gibi http post işlemleri kodları burayada yazacağım belki birinin de işini görür. yada ilham veriri.

php tadafı


<?php
try {
     $db = new PDO("mysql:host=localhost;dbname=database", "user", "password+");
     $db->exec("SET NAMES 'utf8'; SET CHARSET 'utf8'");
} catch ( PDOException $e ){
     print $e->getMessage();
}

if($_POST){
    $veri = json_decode($_POST['json'], true);
    //echo $veri["kuladi"];
    //echo $veri["sifre"];
   
    switch($veri["islem"])
    {
        case 'kontrol':{
            $query = $db->query("SELECT * FROM kullanici WHERE kuladi = '{$veri["kuladi"]}' and sifre = {$veri["sifre"]}")->fetch(PDO::FETCH_ASSOC);
            if ( $query ){
                echo "Dogru";
            } else {
                echo "yanlis";
            }
        }
        break;
        case 'kayit':{

            $query = $db->prepare("INSERT INTO kasa SET
                islem = ?,
                aciklama = ?,
                tarih = ?,
                tutar = ?");
                $insert = $query->execute(array(
                    $veri["tip"], $veri["MesajTxt"], date('Y-m-d',strtotime($veri["TarihTxt"])), floatval($veri["TutarTxt"])
                ));
                if ( $insert ){
                    $last_id = $db->lastInsertId();
                    print "insert işlemi başarılı!";
                }
        }
        break;

        case 'getir':{
            $query = $db->query("SELECT * FROM kasa ORDER BY Id ASC",PDO::FETCH_ASSOC);
            $data = $query->fetchAll(PDO::FETCH_ASSOC);
           
            echo json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT)
          
        }
        break;
        default;
           
            break;
    }
}
?>


delphi tarafı


procedure TForm7.FormShow(Sender: TObject);
var
  NetHTTPClient : TNetHTTPClient;
  parametres : TStringStream;
  jsons : TStringList;
  jValue : TJSonValue;
  jArray : TJSONArray;
  cevap : string;
begin
  NetHTTPClient := TNetHTTPClient.Create(nil);
  try
    NetHTTPClient.ContentType := 'application/json';
    NetHTTPClient.AcceptEncoding := 'UTF-8';

    jsonS := TStringList.create;
   jsonS.Text := 'json={"islem":"getir"}';


    try
      cevap := NetHTTPClient.Post('https://www.palagame.biz.tr/index.php', jsonS).ContentAsString(TEncoding.UTF8);
      memo1.Lines.Add(cevap);
      jValue := TJSONObject.ParseJSONValue(memo1.Text);
      memo1.Lines.Add(jValue.GetValue<string>('islem'));
    finally
      jsonS.Free;
    end;
  finally
    NetHTTPClient.Free;

  end;
end;



hata mesajı olarakta (-- Value "islem" not found --)

gelen veri şu

Array
(
    [0] => Array
        (
            [Id] => 9
            [kulid] =>
            [islem] => Giriş
            [aciklama] => Fitre Giriş ilhami pala
            [tutar] => 200.00
            [tarih] => 2024-03-29
        )

    [1] => Array
        (
            [Id] => 10
            [kulid] =>
            [islem] => Giriş
            [aciklama] => Zekat Giriş ilhami pala
            [tutar] => 300.00
            [tarih] => 2024-03-29
        )

    [2] => Array
        (
            [Id] => 11
            [kulid] =>
            [islem] => Giriş
            [aciklama] => Fitre Giriş sinem pala
            [tutar] => 400.00
            [tarih] => 2024-03-29
        )

    [3] => Array
        (
            [Id] => 12
            [kulid] =>
            [islem] => Giriş
            [aciklama] => Fitre Giriş elif pala
            [tutar] => 600.00
            [tarih] => 2024-03-29
        )

    [4] => Array
        (
            [Id] => 13
            [kulid] =>
            [islem] => Giriş
            [aciklama] => Zekat Giriş  sinem pala
            [tutar] => 400.00
            [tarih] => 2024-03-29
        )

    [5] => Array
        (
            [Id] => 14
            [kulid] =>
            [islem] => Giriş
            [aciklama] => Zekat Giriş  elif pala
            [tutar] => 500.00
            [tarih] => 2024-03-29
        )

    [6] => Array
        (
            [Id] => 15
            [kulid] =>
            [islem] => Çıkış
            [aciklama] => Fitre Çıkış dsadsa
            [tutar] => 100.00
            [tarih] => 2024-03-29
        )

    [7] => Array
        (
            [Id] => 16
            [kulid] =>
            [islem] => Çıkış
            [aciklama] => Fitre Çıkış rrewr
            [tutar] => 200.00
            [tarih] => 2024-03-29
        )

    [8] => Array
        (
            [Id] => 17
            [kulid] =>
            [islem] => Giriş
            [aciklama] => Zekat Çıkış cxx
            [tutar] => 50.00
            [tarih] => 2024-03-29
        )

    [9] => Array
        (
            [Id] => 18
            [kulid] =>
            [islem] => Giriş
            [aciklama] => Zekat Çıkış ggggg
            [tutar] => 150.00
            [tarih] => 2024-03-29
        )

)


Burada bir parse işlemi yapmam gerekiyor lakin hata mesajı alıyorum. bir yerde bir hatam var bulamadım. acil olmasa buraya yazmam araştırır bulur yaparım.
Cevapla
#2
jValue := TJSONArray(TJSONObject.ParseJSONValue)(memo1.Text);
TJSONObject.ParseJSONValue, TJSONValue tipinde bir referans geri döndürür. Bu nedenle onu TJSONObject yahut TJSONArray tipine dönüştürmelisiniz. Sizin veri örneğinize göre TJSONArray olması gerekir. Sonrasında jValue için iterasyonla okuma yapabilirsiniz.
Yanılıyor olabilirim ama veri örneğine baktığımda php 'de var_dump gibi fonksiyonla elde edilmiş gibi. Bu ifade Delphi tarafında Parse edildiğinde geçerli bir JSON dizesi sayılmayacaktır.
Cevapla
#3
Aşağıdaki gibi denemek isteyebilirsiniz.


var
  NetHTTPClient : TNetHTTPClient;
  jsons         : TStringList;
  jArray        : TJSONArray;
  cevap         : string;
  i : Integer;
begin
  NetHTTPClient := TNetHTTPClient.Create(nil);
  try
    NetHTTPClient.ContentType     := 'application/json';
    NetHTTPClient.AcceptEncoding  := 'UTF-8';

    jsonS := TStringList.create;
    try
       jsonS.Text := 'json={"islem":"getir"}';
       cevap := NetHTTPClient.Post('https://www.palagame.biz.tr/index.php', jsonS).ContentAsString(TEncoding.UTF8);
    finally
      jsonS.Free;
    end;

    jArray := TJSONArray( TJSONObject.ParseJSONValue(cevap) );
    if jArray <> nil then
    try
      for i := 0 to jArray.Count-1 do
      begin
        with TJSONObject( jArray.Items[i] ) do
        begin
          memo1.Lines.Add(
            System.Sysutils.Format( '%.2d - [%s] %s : %6s',
              [
                TJSONNumber(FindValue('Id')).AsInt,
                FindValue('tarih').Value,
                FindValue('islem').Value,
                FindValue('tutar').Value
              ]) );
        end;
      end;
    finally
      freeandnil(jArray);
    end;
  finally
    NetHTTPClient.Free;
  end;
end;



Sonuç :
09 - [2024-03-29] Giriş : 200.00
10 - [2024-03-29] Giriş : 300.00
11 - [2024-03-29] Giriş : 400.00
12 - [2024-03-29] Giriş : 600.00
13 - [2024-03-29] Giriş : 400.00
14 - [2024-03-29] Giriş : 500.00
15 - [2024-03-29] Çıkış : 100.00
16 - [2024-03-29] Çıkış : 200.00
17 - [2024-03-29] Giriş :  50.00
18 - [2024-03-29] Giriş : 150.00
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#4
Muharrem ARMAN hocam teşekkürler ama elim ayağım yine durmadı kendimce bir çözüm ürettim belki senin ki kadar kullanışlı değil ama benim çözümde beni idare edecek gibi. yazacağım çözümü buraya. Cevap verdiğin için TEŞEKKÜRLER hocam.
Cevapla
#5
Muharrem ARMAN Hocam Çok Teşekkürler sizin verdiğiniz örnek çok işime yaradı. Elleriniz dert görmesin. Bu projede sizinde isminiz geçecek inşallah
Cevapla
#6
Rica ederim numara formatına çevirip okuma, json array, json object
konuları için iyi bir örnek veemişsiniz. Değerlendirmek bize düştü.

kodda free edilen blokta karışıklık olmuş yeniden inceleyin isterseniz.
jarray free olacak yerde copy/paste kazası olmuş
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  NetHttpClient Fmx Resim cihankoca 4 1.447 27-04-2021, Saat: 09:07
Son Yorum: cihankoca
  Delphi Firebase Post işlemi yhackup 11 10.216 29-06-2020, Saat: 09:29
Son Yorum: TescilsizUzman



Konuyu Okuyanlar: 1 Ziyaretçi