Entwickler-Ecke
Internet / Netzwerk - Wie benutzt man eine API?
spoof - Mo 25.11.13 21:03
Titel: Wie benutzt man eine API?
Hey, ich würde gerne folgende API benutzen:
https://www.cryptsy.com/pages/api
hab aber noch nie mit API´s gearbeitet und finde nur Tutorials von 2003-2004.
Kann mir jemand kurz erklären wie man eine API benutzt?
Ich möchte folgende Kursstatistik in mein Programm einbauen sowie die darunter stehenden kauf und verkauf Preise:
https://www.cryptsy.com/markets/view/45Moderiert von
Martok: Topic aus Sonstiges (Delphi) verschoben am Mo 25.11.2013 um 22:39
Martok - Mo 25.11.13 23:38
Hi!
Was genau ist jetzt das Problem? Dort verlinkt hast du die vollständige Dokumentation der API, mitsamt einem Codebeispiel für PHP (Was genau dort steht kann ich leider nicht mehr sehen, weil mich die Seite geblockt hat(!?) und nicht für sowas Cookies freigebe).
Was hast du, was funktioniert (nicht)?
Viele Grüße,
Martok
PS: verschoben nach "Internet/Netzwerk".
OlafSt - Di 26.11.13 12:50
Dem guten Mann ist nicht klar, das er schon die ganze Zeit eine API benutzt: das WinAPI ;)
Eine API ist nix anderes als eine Routinensammlung zu einem bestimmten Zweck. Um Kartenleser anzusteuern und die Smartcards auszulesen, braucht man Routinen - zusammengefaßt als CT-API oder PC/SC-API. Nix anderes ist die gezeigte API.
Du kennst also die Namen der Routinen, die Parameter, die sie so brauchen (Input) und das, was sie zurückgeben (Output). Mehr gibt es tatsächlich nicht darüber zu wissen. Ergo: Go for it !
bole - Di 26.11.13 23:04
Hallo spoof
Ich nehme an das Die die bisherigen Antworten wohl nicht wirklich was genutzt haben...
Schau mal diesen Thread an
http://www.entwickler-ecke.de/viewtopic.php?t=111904&highlight=wetter Da hat
Mathematiker was ähnliches mit Wetterdaten gemacht. Diese API gibt die Daten auch im JSON Format zurück.
Wie man diese Daten dann aber korrekt Interpretiert und Anzeigt steht auf einem anderen Blatt...
Viel Glück :wink:
Bole
Delete - Do 28.11.13 13:13
Hi,
ich habe dir mal den Teil aus meinem BitCoin-Programm rausgesucht, wo der JSON-String geparst wird. (Also die TokenList durchgehen...)
Ich fülle damit meine Klassen (TMarket), aber das kannst du analog in deine Struktur übernehmen...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113:
| procedure TTraderMarket.ParserToMarkets(AParser: TJSONParser; AMarkets: TMarkets); var i: Integer; LKind: TJSONTokenKind; LString, LStr2: String; LState: TParsingState; LMarket: TMarket; LTrade: TTradeItem; LOrder: TOrderItem; LOldDecimalSep: Char; begin for LMarket in FMarkets do LMarket.Clear; FMarkets.Clear; LOldDecimalSep := FormatSettings.DecimalSeparator; try FormatSettings.DecimalSeparator := '.'; LState := psNone; for i := 0 to AParser.TokenList.Count -1 do begin LKind := AParser.TokenList.GetItemKind(i); LString := AParser.TokenList.GetItemContent(i);
if LString = '"marketid"' then begin LMarket := TMarket.Create; LMarket.NodeId := AParser.TokenList.GetItemContent(i-2); LMarket.MarketId := AParser.TokenList.GetItemContent(i+1); LMarket.Labl := AParser.TokenList.GetItemContent(i+4); LMarket.LastTradePrice := StrToFloat(AParser.TokenList.GetItemContent(i+7)); LMarket.Volume := StrToFloat(AParser.TokenList.GetItemContent(i+10)); LMarket.LastTradeTime := CryptsyDateStringToDateTime(AParser.TokenList.GetItemContent(i+13)); LMarket.PrimaryName := AParser.TokenList.GetItemContent(i+16); LMarket.PrimaryCode := AParser.TokenList.GetItemContent(i+19); LMarket.SecondaryName := AParser.TokenList.GetItemContent(i+22); LMarket.SecondaryCode := AParser.TokenList.GetItemContent(i+25); end;
if (LKind = jsArrayStart) and (AParser.TokenList.GetItemContent(i-1) = '"recenttrades"') then begin LState := psRecentTrades; end else if (LKind = jsArrayStart) and (AParser.TokenList.GetItemContent(i-1) = '"sellorders"') then begin LState := psSellOrders; end else if (LKind = jsArrayStart) and (AParser.TokenList.GetItemContent(i-1) = '"buyorders"') then begin LState := psBuyOrders; end;
case LState of psNone: begin Continue; end; psRecentTrades: begin if (LString = '"id"') and (AParser.TokenList.GetItemContent(i+3) = '"time"') and (AParser.TokenList.GetItemContent(i+6) = '"price"') and (AParser.TokenList.GetItemContent(i+9) = '"quantity"') and (AParser.TokenList.GetItemContent(i+12) = '"total"') then begin LTrade := TTradeItem.Create; LTrade.Id := AParser.TokenList.GetItemContent(i+1); LTrade.Time := CryptsyDateStringToDateTime(AParser.TokenList.GetItemContent(i+4)); LTrade.Price := StrToFloat(AParser.TokenList.GetItemContent(i+7)); LTrade.Qty := StrToFloat(AParser.TokenList.GetItemContent(i+10)); LTrade.Total := StrToFloat(AParser.TokenList.GetItemContent(i+13)); LMarket.RecentTrades.Add(LTrade); end; end; psSellOrders: begin if (AParser.TokenList.GetItemContent(i+2) = '"price"') and (AParser.TokenList.GetItemContent(i+5) = '"quantity"') and (AParser.TokenList.GetItemContent(i+8) = '"total"') then begin LOrder := TOrderItem.Create; LOrder.Price := StrToFloat(AParser.TokenList.GetItemContent(i+3)); LOrder.Qty := StrToFloat(AParser.TokenList.GetItemContent(i+6)); LOrder.Total := StrToFloat(AParser.TokenList.GetItemContent(i+9)); LMarket.SellOrders.Add(LOrder); end; end; psBuyOrders: begin if (AParser.TokenList.GetItemContent(i+2) = '"price"') and (AParser.TokenList.GetItemContent(i+5) = '"quantity"') and (AParser.TokenList.GetItemContent(i+8) = '"total"') then begin LOrder := TOrderItem.Create; LOrder.Price := StrToFloat(AParser.TokenList.GetItemContent(i+3)); LOrder.Qty := StrToFloat(AParser.TokenList.GetItemContent(i+6)); LOrder.Total := StrToFloat(AParser.TokenList.GetItemContent(i+9)); LMarket.BuyOrders.Add(LOrder); end; end; end;
if (LState = psBuyOrders) and (lKind = jsArrayEnd) and (LMarket <> nil) then begin LState := psNone; FMarkets.Add(LMarket); end; end; finally FormatSettings.DecimalSeparator := LOldDecimalSep; end; end; |
Die Unit "jsonparser" liegt Delphi bei.
Gruß
rd3
spoof - Do 28.11.13 23:48
Hallo, danke erstmal für die ganzen Antworten.
Ich hab atm leider kaum Zeit zum coden weshalb ich noch nicht richtig weiter machen konnte aber ich glaube ich weiß schon grob wie das ganze gehen soll. In den Api´s werden immer die aktuellen kurse usw gesendet, die muss ich dann wohl irgendwie einlesen so wie ich das verstanden hab. Muss mich damit genauer befassen hat so keinen Sinn atm.^^
Danke trotzdem werde den Thread vllt iwann mal ausgraben :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!