C# C# - API Abruf programmieren

klaus2003

Cadet 1st Year
Registriert
Sep. 2011
Beiträge
12
Hallo zusammen,

ich habe mir schonmal einen API Abruf programmiert, welcher auf den Server >>marketstack<< zugreift.
Leider ist hier der Abruf sehr eingeschränkt. Daher würde ich gerne den Abruf auf einen anderen Server (Yahoo, Google) umstellen.

Daher meine Frage, ob mir bei der Umstellung jemand helfen kann?

Ich habe bereits über Google nach entsprechenden Hilfen gesucht und leider nichts brauchbares gefunden. Ebenfalls frage ich mich auch, welcher Abruf besser ist - Google oder Yahoo?

Bei Marketstack kann ich leider nur den Kurs für XNAS abrufen. Den Abruf möchte ich so gestalten, dass ich vielleicht den DAX, den Gold-Preis, den Euro-Kurs und ggf. den DOW abrufen kann. Idealerweise sollte der Abruf kostenlos sein oder für einen geringen Obulus möglich sein.

PS: Hat jemand schon Erfahrung mit dem API Abruf auf einen einzelnen Twitterpost - Abfrage der Like- und Retweet - Werte?
 
Hi,

ich versteh irgendwie nicht was Google und Yahoo damit zu tun hat, sorry.
Wie hast du denn die API "programmiert" und wo lässt du das laufen?

Laut dem marketstack pricing sind ja 100 API calls / Monat kostenlos.

Die API Docu von marketstack bist du durchgegangen und benutzt sie so?
 
  • Gefällt mir
Reaktionen: madmax2010
Bitopium schrieb:
Die API Docu von marketstack bist du durchgegangen und benutzt sie so?

C#:
string url_string = "http://api.marketstack.com/v1/eod" +
                                                    "?access_key=" + key +
                                                    "&symbols=" + indx_fltr +
                                                    "&exchange=" + "XNAS" +
                                                    "&date_from=" + datfrtt.ToString("yyyy-MM-dd") + "" +
                                                    "&date_to=" + dattott.ToString("yyyy-MM-dd");

            APIdata = new System.Net.WebClient().DownloadString(url_string);
            rawData = APIdata;
            Array DataList;

            splittedData = rawData.Split(',');
            DataList = splittedData;


            foreach (string val_Data in DataList)
            {
                if (val_Data.Substring(1, 3) != "adj")
                {
                    richTextBox1.AppendText(val_Data + evnl);
                }

                if ((val_Data.Contains("close")) & (!val_Data.Contains("adj_close")))
                {
                    string tmp_value = val_Data.Replace('"', ' ');
                    int srch_sgn = tmp_value.IndexOf(':');
                    textBox1.Text = tmp_value.Substring((srch_sgn + 1), (tmp_value.Length - (srch_sgn + 1)));
                }

            }

Das ist mein Quellcode für den Abruf, welcher die Werte zu XNAS gut abruft. Das Programm habe ich in Sprache C# unter Visual Studio geschrieben und auf einem Windows 10 Computer am laufen.

Warum ich Yahoo und Google erwähnt habe ist, dass beide auch APIs bereit stellen und man darüber ebenfalls Börsenkurse abrufen kann.

Daher ja auch meine Frage, wie man entweder über Google Finance oder über Yahoo Finance diese Werte abrufen kann und ob man hierüber auch den Wert (bei Marketstack klappt es leider nicht) zum DAX abrufen kann.
 
Zuletzt bearbeitet: (Ergänzung)
Und wieso soll DAX nicht gehen? Ist laut dder marketstack Seite ein valides Symbol
 
Bitopium schrieb:
Und wieso soll DAX nicht gehen? Ist laut dder marketstack Seite ein valides Symbol
Weil im kostenlosen Angebot von Marketstack nur der Abruf des Stock Exchange XNAS zulässig ist und der DAX auf einem anderen "Kanal" liegt. Sobald du den Stock Exchange änderst, erhältst du diese Rückmeldung:

System.Net.WebException: "Der Remoteserver hat einen Fehler zurückgegeben: (403) Unzulässig.

Daher möchte ich gerne den "Anbieter" / den Remoteserver des Abrufs ändern auf eben Google oder Yahoo.
 
Hallo zusammen, ich möchte dieses Thema nochmal reaktivieren - denn für eine Frage zu diesem Thema möchte ich keinen weiteren Thread eröffnen.

Ich bin immer noch an der API Funktion dran. Das mit dem Abruf von aktuellen Börsenkursen möchte ich zunächst mal zurückstellen und mich eher dem Abruf der Einträge im Google Kalender und den Likes/Retweets von einem Twitter Account widmen.

Daher möchte ich erneut in die Runde fragen, ob mir jemand dabei helfen kann und oder wo ich entsprechende Hilfestellungen zu den o. g. Themen finden kann. Habe schon per Google danach gesucht, aber leider nichts verwertbares gefunden. Selbst in den Twitter Beispielen ist der Abruf der Retweets und Likes nicht erkennbar. Hier dreht es sich primär um die Suche nach Themen und dem Posten von Tweets.

Hoffe mir kann jemand bei dieser Thematik behilflich sein.
 
klaus2003 schrieb:
Selbst in den Twitter Beispielen ist der Abruf der Retweets und Likes nicht erkennbar. Hier dreht es sich primär um die Suche nach Themen und dem Posten von Tweets.

Ihm, die APIs sind doch in der Twitter Dokumentation dokumentiert.

Retweets: https://developer.twitter.com/en/docs/twitter-api/tweets/retweets/introduction

Likes: https://developer.twitter.com/en/docs/twitter-api/tweets/likes/introduction

Für HTTP Requests solltest du übrigens besser die Klasse System.Net.HttpClient verwenden, da System.Net.WebClient nicht mehr unterstützt wird.

https://docs.microsoft.com/de-de/dotnet/api/system.net.http.httpclient?view=net-6.0
 
Prinzipiell kann man doch auch einfach beliebige Webseiten auslesen ohne API und meist sich dann die gewünschten Infos einfach per Regular Expression mit (.*?) aus dem HTML rausziehen.

So mache ich das bei manchen externen Infos, die ich per Software auswerte.

Die meisten Seiten mit Daten werden doch eh maschinell und nicht per Hand erstellt - da hat man oft nur alle paar Jahre mal eine kleine Anpassung, wenn das Layout geändert wird - das kaum öfters, als sich manche APIs ändern ....

Also z.B. ganz grob

Code:
WebRequest myWebRequest = WebRequest.Create(_HTMLPage);
...  der WebRequest => Stream Krams
        
using (StreamReader myStreamReader = new StreamReader(myDataStream))
{
     myHTMLData = myStreamReader.ReadToEnd();
}
...
// Hehe einfach mal ne Seite mit einem DAX Wert rausgesucht als Bsp
Match myhrefMatch = Regex.Match(myHTMLData, @"<div class=\u0022header-index\u0022><a href=\u0022/index/dax\u0022>DAX</a>:(.*?)<a href=\u0022/index/euro_stoxx_50\u0022>");
if (myhrefMatch.Success)
{
     ... und dann myhrefMatch.Groups[1].Value halt entsprechend
                                weiterverarbeiten und auswerten
}
....
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben