Json Apikey sorunu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Json Apikey sorunu
Json ile Hitbtc.com adresindeki hesabımdaki verileri okumak istioyrum. ama bir türlü yapamıyorum.
procedure TForm1.Button1Click(Sender: TObject);
begin
URL:= TIdHTTP.Create(nil);
try
jsonoutput:=URL.Get('https://api.hitbtc.com/api/2/public/ticker');
jsonaray:=TJSONObject.ParseJSONValue(jsonoutput) as TJSONArray;
StringGrid1.RowCount:=jsonaray.Count+1;
for I := 0 to jsonaray.Count-1 do
begin
StringGrid1.Cells[0,I+1]:= inttostr(I+1);
jsonobjekloop:= JSONaray.Get(i) as tJSONobject;
coinismi:=(jsonobjekloop.GetValue('symbol').Value);
StringGrid1.Cells[1,I+1]:= (jsonobjekloop.GetValue('symbol').Value);
end;
finally
Url.Free;
end
end;
bu şekilde koinlerin isimlerini listeliyebiliyorum. ama hesabımdaki miktarları programımda gösteremiyorum.
sitesinde şöyle bir formül var:
curl -u "publicKey:secretKey" https://api.hitbtc.com/api/2/trading/balance
curl -X GET -u "ff20f250a7b3a414781d1abe11cd8cee:fb453577d11294359058a9ae13c94713" \
"https://api.hitbtc.com/api/2/trading/balance"
The above command returns JSON structured like this:
[
{
"currency": "ETH",
"available": "10.000000000",
"reserved": "0.560000000"
},
{
"currency": "BTC",
"available": "0.010205869",
"reserved": "0"
}
]
Yardımcı olursanız çok sevinirim. Şimdiden teşekkür ederim.
procedure TForm1.Button1Click(Sender: TObject);
begin
URL:= TIdHTTP.Create(nil);
try
jsonoutput:=URL.Get('https://api.hitbtc.com/api/2/public/ticker');
jsonaray:=TJSONObject.ParseJSONValue(jsonoutput) as TJSONArray;
StringGrid1.RowCount:=jsonaray.Count+1;
for I := 0 to jsonaray.Count-1 do
begin
StringGrid1.Cells[0,I+1]:= inttostr(I+1);
jsonobjekloop:= JSONaray.Get(i) as tJSONobject;
coinismi:=(jsonobjekloop.GetValue('symbol').Value);
StringGrid1.Cells[1,I+1]:= (jsonobjekloop.GetValue('symbol').Value);
end;
finally
Url.Free;
end
end;
bu şekilde koinlerin isimlerini listeliyebiliyorum. ama hesabımdaki miktarları programımda gösteremiyorum.
sitesinde şöyle bir formül var:
curl -u "publicKey:secretKey" https://api.hitbtc.com/api/2/trading/balance
curl -X GET -u "ff20f250a7b3a414781d1abe11cd8cee:fb453577d11294359058a9ae13c94713" \
"https://api.hitbtc.com/api/2/trading/balance"
The above command returns JSON structured like this:
[
{
"currency": "ETH",
"available": "10.000000000",
"reserved": "0.560000000"
},
{
"currency": "BTC",
"available": "0.010205869",
"reserved": "0"
}
]
Yardımcı olursanız çok sevinirim. Şimdiden teşekkür ederim.
Re: Json Apikey sorunu
Merhaba,
Kullandığınız Delphi sürümü nedir?
1- Sorununuz ticker bilgilerini sunucudan alabiliyor iken balance bilgilerini alamıyor olmak mı?
2- Yoksa balance bilgilerini sunucudan alabiliyorsunuz ancak bunları de-serialize edemiyor musunuz?
Deneme yapabilmek için geçerli kullanıcı ve şifre bilgilerini paylaşabilirseniz yardımcı olmak daha kolay olacaktır. Örnek verdiğiniz "curl -u" içindeki kullanıcı adı ve şifre bilgileri geçerli değil.
Kullandığınız Delphi sürümü nedir?
1- Sorununuz ticker bilgilerini sunucudan alabiliyor iken balance bilgilerini alamıyor olmak mı?
2- Yoksa balance bilgilerini sunucudan alabiliyorsunuz ancak bunları de-serialize edemiyor musunuz?
Deneme yapabilmek için geçerli kullanıcı ve şifre bilgilerini paylaşabilirseniz yardımcı olmak daha kolay olacaktır. Örnek verdiğiniz "curl -u" içindeki kullanıcı adı ve şifre bilgileri geçerli değil.
Re: Json Apikey sorunu
Kullandığım sürüm XE8
Ticker bilgilerini alabiliyorum. Çünkü Ticker bilgilerine ulaşmak için Publickey ve Secretkey e ihitiyaç yok.
Fakat balance bilgilerime ulaşmak için publickey ve secretkey i kullanmam gerek. sitede hesabımda bana ait olan keyler yazıyor. Ama bunları nasıl kullanacağımı bilemiyorum.
burada bir bilgi var ama çözemedim.
https://api.hitbtc.com/#authentication
Ticker bilgilerini alabiliyorum. Çünkü Ticker bilgilerine ulaşmak için Publickey ve Secretkey e ihitiyaç yok.
Fakat balance bilgilerime ulaşmak için publickey ve secretkey i kullanmam gerek. sitede hesabımda bana ait olan keyler yazıyor. Ama bunları nasıl kullanacağımı bilemiyorum.
burada bir bilgi var ama çözemedim.
https://api.hitbtc.com/#authentication
Re: Json Apikey sorunu
curl -u parametresi basic authentication için kullanılır. Kullanıcı kodu ve şifre iki nokta üst üste ":" işareti ile ayrılır.
Delphi ile curl kullanımı mümkündür. Ancak yapılması istenilen işlem için buna gerek yoktur.
Örnek curl komutunu Delphi ile Indy10 bileşenleri kullanarak aşağıdaki gibi uygulayabilirsiniz:
Kullanımı aşağıdaki gibi olacaktır:
Örnekler Delphi 10.2.3 ile çalışmaktadır. delphi XE8 ile de çalışacaktır.
İletişim HTTPS (SSL) olacağı için EXE ile aynı dizine OpenSSL DLL dosyalarını kopyalamak gereklidir. Yoksa örnek kod çalışmayıp dll dosyaları bulunamadığına dair hata verecektir.
Delphi ile curl kullanımı mümkündür. Ancak yapılması istenilen işlem için buna gerek yoktur.
Örnek curl komutunu Delphi ile Indy10 bileşenleri kullanarak aşağıdaki gibi uygulayabilirsiniz:
Kod: Tümünü seç
uses
IdBaseComponent,
IdComponent,
IdTCPConnection,
IdTCPClient,
IdHTTP,
IdSSLOpenSSL,
IdCompressorZLib;
function GetHttpData(const Url: string; out JsonResponse: string; UseAuthentication: Boolean = False): Boolean;
const
UserCode = 'ff20f250a7b3a414781d1abe11cd8cee'; // Sizin kullanıcı kodunuz
Password = 'fb453577d11294359058a9ae13c94713'; // Sizin şifreniz
var
Http: TIdHTTP;
Handler: TIdSSLIOHandlerSocketOpenSSL;
begin
Http := nil;
Handler := nil;
Screen.Cursor := crHourGlass;
try
Http := TIdHTTP.Create(nil);
Handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
Handler.SSLOptions.SSLVersions := [sslvSSLv23];
Http.IOHandler := Handler;
Http.Compressor := TIdCompressorZLib.Create(Http);
Http.HandleRedirects := True;
Http.Request.UserAgent := 'Mozilla/5.0 (compatible)'; // Düzenlenmediği zaman bazı siteler bağlantıya izin vermiyor
Http.Request.BasicAuthentication := UseAuthentication;
if UseAuthentication then
begin
Http.Request.Username := UserCode;
Http.Request.Password := Password;
end;
try
JsonResponse := Http.Get(Url);
except
on E:Exception do
begin
JsonResponse := E.Message;
Exit(False);
end;
end;
finally
Http.Free();
Handler.Free();
Screen.Cursor := crDefault;
end;
Result := True;
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
const
TICKERURL = 'https://api.hitbtc.com/api/2/public/ticker';
BALANCEURL = 'https://api.hitbtc.com/api/2/trading/balance';
var
Json: string;
begin
if GetHttpData(TICKERURL, Json) then
begin
// veri ile ne yapılmak isteniyor ise...
end
else
begin
ShowMessage('HTTP ticker verisi alınamadı. Hata: ' + Json);
end;
// Authentication kullanılması için son parametre True olmalı
if GetHttpData(BALANCEURL, Json, True) then
begin
// veri ile ne yapılmak isteniyor ise...
end
else
begin
ShowMessage('HTTP balance verisi alınamadı. Hata: ' + Json);
end;
end;
İletişim HTTPS (SSL) olacağı için EXE ile aynı dizine OpenSSL DLL dosyalarını kopyalamak gereklidir. Yoksa örnek kod çalışmayıp dll dosyaları bulunamadığına dair hata verecektir.
Re: Json Apikey sorunu
Hocam çok teşekkür ederim. Hata mesajı almıyorum. fakat " veri ile ne yapılmak isteniyor" kısmınıda bir örnek verebilirmisin? mesela alınan verileri memo1 yazdırabilirmiyiz. delphi konusunda yeniyim. Allah razı olsun çok işime yarıyacak inşAllah.
Re: Json Apikey sorunu
Aşağıdaki güncellemeleri yapıp uygulamayı çalıştırın. Exe dosya ile aynı dizinde oluşacak "ticker.json" ve "balance.json" dosyalarını forumda paylaşın. Bu bilgiler yardımı ile json de-serialize işlemine örnek kod yazmak mümkün olacaktır.
Mevcut kodun uses kısmını aşağıdaki gibi güncelleyin (System.IOUtils eklenecek):
Buton tıklama kodunu aşağıdaki gibi güncelleyin (TFile.WriteAllText satırları eklenecek):
Mevcut kodun uses kısmını aşağıdaki gibi güncelleyin (System.IOUtils eklenecek):
Kod: Tümünü seç
uses
IdBaseComponent,
IdComponent,
IdTCPConnection,
IdTCPClient,
IdHTTP,
IdSSLOpenSSL,
IdCompressorZLib,
System.IOUtils;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
const
TICKERURL = 'https://api.hitbtc.com/api/2/public/ticker';
BALANCEURL = 'https://api.hitbtc.com/api/2/trading/balance';
var
Json: string;
begin
if GetHttpData(TICKERURL, Json) then
begin
// veri ile ne yapılmak isteniyor ise...
TFile.WriteAllText('ticker.json', Json);
end
else
begin
ShowMessage('HTTP ticker verisi alınamadı. Hata: ' + Json);
end;
// Authentication kullanılması için son parametre True olmalı
if GetHttpData(BALANCEURL, Json, True) then
begin
// veri ile ne yapılmak isteniyor ise...
TFile.WriteAllText('balance.json', Json);
end
else
begin
ShowMessage('HTTP balance verisi alınamadı. Hata: ' + Json);
end;
end;
Re: Json Apikey sorunu
Json çıktıları ektedir.
order.json
{
"ask": [
{
"price": "0.046002",
"size": "0.088"
},
{
"price": "0.046800",
"size": "0.200"
}
],
"bid": [
{
"price": "0.046001",
"size": "0.005"
},
{
"price": "0.046000",
"size": "0.200"
}
]
}
balance.json
[
{
"currency": "ETH",
"available": "10.000000000",
"reserved": "0.560000000"
},
{
"currency": "BTC",
"available": "0.010205869",
"reserved": "0"
}
]
ticker.json
[
{
"ask": "0.050043",
"bid": "0.050042",
"last": "0.050042",
"open": "0.047800",
"low": "0.047052",
"high": "0.051679",
"volume": "36456.720",
"volumeQuote": "1782.625000",
"timestamp": "2017-05-12T14:57:19.999Z",
"symbol": "ETHBTC"
}
]
Re: Json Apikey sorunu
Mesela order.json daki ilk "ask" içindeki price ve size bilgisini bir dizi değişkene aktarmak istiyorum.
order.json daki ilk "bid" içindeki price ve size bilgisini bir dizi değişkene aktarmak istiyorum.
order.json daki ilk "bid" içindeki price ve size bilgisini bir dizi değişkene aktarmak istiyorum.
Re: Json Apikey sorunu
Ekteki uygulamayı inceleyebilirsiniz.
- Uygulama json işlemleri için ücretsiz mORMot kodlarını kullanmaktadır.
- Framework kodları içinden gerekli dosyalar eklenmiş durumda. Framework'ün tamamını temin etmek istiyorsanız aşağıdaki bağlantıdan indirebilirsiniz:
https://synopse.info/files/mORMotNightlyBuild.zip
- Https erişimi için gerekli OpenSSL DLL dosyalarını EXE ile aynı dizine kopyalamanız gerekli
- Uygulama json işlemleri için ücretsiz mORMot kodlarını kullanmaktadır.
- Framework kodları içinden gerekli dosyalar eklenmiş durumda. Framework'ün tamamını temin etmek istiyorsanız aşağıdaki bağlantıdan indirebilirsiniz:
https://synopse.info/files/mORMotNightlyBuild.zip
- Https erişimi için gerekli OpenSSL DLL dosyalarını EXE ile aynı dizine kopyalamanız gerekli
- Dosya ekleri
-
- hitbtc.com_json_api.7z
- (374.89 KiB) 130 kere indirildi