Delphi ดึง JSON ราคา bitcoin จาก API bitstamp.net/api

Piyanat Nimkhuntod
3 min readDec 25, 2022

--

วันนี้มีโจทย์จาก พี่ๆคนเขียน Delphi ว่าอยากจะดึงข้อมูลจาก Bitstamp ด้วย Delphi ต้องทำอย่างไร ด้วย HTTPNetClient

ผมจึงเข้าไปดูเว็บต้นทางแล้วก็พบว่า มี api document อยู่ https://www.bitstamp.net/api/#ticker โดยโจทย์คือดึง ticker

รูปแบบการใช้คือ https://www.bitstamp.net/api/v2/ticker/{currency_pair}/

โดย {currency_pair} คือ parameter ที่เราต้องระบุส่งไป โดยเลือกซักตัวจาก รายการด้านล่าง ในกรณีนี้ผมจะเลือก btcusd หรือ ราคา bitcoin เป็น Us Dollar นั่นเอง

btcusd, btceur, btcgbp, btcpax, gbpusd, gbpeur, eurusd, xrpusd, xrpeur, xrpbtc, xrpgbp, ltcbtc, ltcusd, ltceur, ltcgbp, ethbtc, ethusd, etheur, ethgbp, ethpax, bchusd, bcheur, bchbtc, paxusd, xlmbtc, xlmusd, xlmeur, xlmgbp, linkusd, linkeur, linkgbp, linkbtc, omgusd, omgeur, omggbp, omgbtc, usdcusd, usdceur, btcusdc, ethusdc, eth2eth, aaveusd, aaveeur, aavebtc, batusd, bateur, umausd, umaeur, daiusd, kncusd, knceur, mkrusd, mkreur, zrxusd, zrxeur, gusdusd, algousd, algoeur, algobtc, audiousd, audioeur, audiobtc, crvusd, crveur, snxusd, snxeur, uniusd, unieur, unibtc, yfiusd, yfieur, compusd, compeur, grtusd, grteur, lrcusd, lrceur, usdtusd, usdteur, usdcusdt, btcusdt, ethusdt, xrpusdt, eurteur, eurtusd, manausd, manaeur, maticusd, maticeur, sushiusd, sushieur, chzusd, chzeur, enjusd, enjeur, hbarusd, hbareur, alphausd, alphaeur, axsusd, axseur, sandusd, sandeur, storjusd, storjeur, adausd, adaeur, adabtc, fetusd, feteur, sklusd, skleur, slpusd, slpeur, sxpusd, sxpeur, sgbusd, sgbeur, avaxusd, avaxeur, dydxusd, dydxeur, ftmusd, ftmeur, shibusd, shibeur, ampusd, ampeur, ensusd, enseur, galausd, galaeur, perpusd, perpeur, wbtcbtc, ctsiusd, ctsieur, cvxusd, cvxeur, imxusd, imxeur, nexousd, nexoeur, antusd, anteur, godsusd, godseur, radusd, radeur, bandusd, bandeur, injusd, injeur, rlyusd, rlyeur, rndrusd, rndreur, vegausd, vegaeur, 1inchusd, 1incheur, solusd, soleur, apeusd, apeeur, mplusd, mpleur, dotusd, doteur, nearusd, neareur, dogeusd, dogeeur

ให้เราเปิดมันด้วย browser ปกติ https://www.bitstamp.net/api/v2/ticker/btcusd ก็จะได้ Response เป็น JSON ออกมาดังนี้ครับ ให้เรา copy ข้อความที่ได้ไว้

เปิดเว็บ jsontodelphi.com แล้วนำข้อความที่ copy มาวางไว้ที่ช่อง Enter Json

https://jsontodelphi.com/

JSON นั้นมีชื่อเต็มๆว่า JavaScript Object Notation โดยจะได้มาจากการเรียก API แล้ว ได้รับการตอบกลับผลลัพธ์มาเป็น JSON

แล้วกด Generate

web จะแสดงหน้า preview ขึ้นมาให้

ให้ติ๊กเลือก Pkg.Json.DTD.pas กด Download จะได้ไฟล์มาสองไฟล์

ดูตัวอย่างการใช้ได้จากการกดปุ่ม Sample Use

เปิด Delphi แล้ว Copy File ทั้งสองไปวางใน Path เดียวกับ Source code แล้ว Add เข้ามาใน Project

ทำการ Use .Pas เข้ามาใน Form

เราจะทำการดึงข้อมูลจาก JSON โดยกำหนดว่าจะดึงข้อมูลที่เป็น Response มาแสดง

โดยเราจะทำหน้า UI มารับดังนี้

เราก็จะเขียนโปรแกรมดังนี้

procedure TMainForm.Button1Click(Sender: TObject);
var
Res : IHTTPResponse;
BitCoin : TRoot;
begin

BitCoin := TRoot.Create();
Res:= NetHTTPRequest1.get(‘https://www.bitstamp.net/api/v2/ticker/btcusd');
BitCoin.AsJson := Res.ContentAsString;

TxtLastValue.Text := BitCoin.Last;
TxtHightValue.Text := BitCoin.High;

TxtLastValue.Text := BitCoin.Last;
TxtHightValue.Text := BitCoin.High;
TxtLowValue.Text := BitCoin.Low;
TxtVwapValue.Text := BitCoin.Vwap;
TxtValumeValue.Text := BitCoin.Volume;
TxtBidValue.Text := BitCoin.BId;
TxtAskValue.Text := BitCoin.Ask;
TxtTimeStampValue.Text:= BitCoin.Timestamp;
TxtOpenValue.Text := BitCoin.Open;
TxtOpen24Value.Text := BitCoin.Open24;
TxtPercentValue.Text := BitCoin.PercentChange24;

end;

เท่านี้ก็เรียบร้อย

ผมเอา code ขึ้นไว้ที่ https://github.com/piyanatn/DelphiBitstampAPI

--

--

No responses yet