German Datenabruf von Drittanbietern

Maxelo007

Member
Licensed User
Longtime User
Liebe B4A Gemeinde,
ich habe eine App für eine Firma, mit der man den Ankauf von Altgold berechnen kann. Der jeweilige Gold-, Silber und Platinkurs muss hier aber immer manuell eingegeben werden.
Nun suche ich nach einer Möglichkeit die jeweiligen Kurse als Zahl/String abzurufen, bzw. herunter zu laden, um damit die Ankaufswerte berechnen zu können.
Ich finde hier einfach keine Lösung.
Wer hat hier Erfahrungen, wer kann mir hier weiterhelfen?
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Maxelo007,

eine Goldankauf-App habe ich vor mehr als 10 Jahren einmal für den Pocket-PC gemacht, da habe ich auch immer den Goldpreis aus dem Internet heruntergeladen. ;)

Vor 1 Jahr habe ich mir kurz eine App geschrieben, mit der ich den Bitcoin-Kurs anzeigen kann.
Dieser Sourcecode sollte Dir mit ein paar kleinen Anpassungen helfen:
B4X:
Sub Button1_Click
    
    Dim j As HttpJob
    j.Initialize("", Me)
    j.Download("https://api.coindesk.com/v1/bpi/currentprice.json")  '-- von hier kommen die Daten --
    ProgressDialogShow2("Download der Daten ...", False)
    Wait For (j) JobDone (j As HttpJob)
    If j.Success Then
        Log(j.GetString)
        Dim parser As JSONParser
        parser.Initialize(j.GetString)
        Dim root As Map = parser.NextObject
        Dim bpi As Map = root.Get("bpi")
        Dim USD As Map = bpi.Get("USD")
        Dim rate As String = USD.Get("rate")
        Dim time As Map = root.Get("time")
        Dim updatedISO As String = time.Get("updatedISO")
        Dim disclaimer As String = root.Get("disclaimer")
        Log(disclaimer)
        Log(updatedISO)

        DateTime.DateFormat = "dd.MM.yyyy"  '-- JH --
        DateTime.TimeFormat = "HH:mm"  '-- JH --
        Log("Am "&DateTime.Date(DateTime.Now)&" um "&DateTime.Time(DateTime.Now)&" Uhr")

    '-- die Tausenderzeichen beim USD auswechslen --
        rate = rate.Replace(",", "a")
        rate = rate.Replace(".", "b")
        rate = rate.Replace("a", ".")
        rate = rate.Replace("b", ",")
        Dim cs As CSBuilder
        cs.Initialize.Color(0xFF3C8C23).Append(rate).Append(" U$D")  '-- JH --
        cs.Pop.Append(CRLF).size(16).append("Am "&DateTime.Date(DateTime.Now)&" um "&DateTime.Time(DateTime.Now)&" Uhr").PopAll
        Label1.Text = cs
    Else
        Log("Fehlermeldung: " & j.ErrorMessage)
    End If
    ProgressDialogHide
    j.Release
    
End Sub

Viel Spaß!
 

Maxelo007

Member
Licensed User
Longtime User
Hallo Jotha,
vielen Dank. Das sieht ja gut aus. Ich werde mich mal mit "spielen".
 

DonManfred

Expert
Licensed User
Longtime User
Top