Laden...

Via WebClient XML downloaden, davor Button auf Website klicken und Auswahl speichern?

Erstellt von droerick vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.381 Views
droerick Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren
Via WebClient XML downloaden, davor Button auf Website klicken und Auswahl speichern?

Der Webdienst tumblr bietet eine einfache API bei der man über eine URL auf ein XML-Datei mit einfachen Statistik Daten zugreifen kann.

Hier Infos zur API:
https://www.tumblr.com/docs/en/api/v1

Hier ein Beispiel:
https://demo.tumblr.com/api/read

Beim ersten Aufruf über den Brower muss man allerdings einen "Annehmen"-Button drücken.

Ich möchte die XML-Daten per C# einlesen und weiter verarbeiten. Mein bisheriger Ansatz ist leider nicht von Erfolg gekrönt. Auch beim zweiten Aufruf kommt nur der HTML-Code zurück, nicht der XML-Code. Scheinbar funktioniert das Klicken des Button nicht korrekt.

Spreche ich den Button falsch an?

 
string strURL = "https://demo.tumblr.com";

WebClient wClient = new WebClient();
wClient.Headers["Content-type"] = "text/xml";
wClient.Encoding = Encoding.UTF8;
wClient.BaseAddress = strURL;

string strData = wClient.DownloadString("/api/read");

if (strData.StartsWith("<!DOCTYPE html>"))
{
    var nvcAgree = new System.Collections.Specialized.NameValueCollection
    {
        {"btn yes", "agree" }
    };
   
    strData = Encoding.UTF8.GetString(wClient.UploadValues("/api/read", nvcAgree));

    this.textBox1.Text = strData;    
}

D
261 Beiträge seit 2015
vor 4 Jahren

Du musst bei deiner Anfrage die benötigten Cookies setzen.

16.807 Beiträge seit 2008
vor 4 Jahren

Werde Dir nur grob helfen, weil Du gegen die Tumblr AGB verstößt:

  • WebClient wegwerfen und den seit Jahren existierenden und empfohlenen HttpClient verwendet
  • Cookies setzen, die die Seite setzt (sieht man in den Developer Tools den Browsers)

Hups, da war mittlerweile jemand schneller 😃

droerick Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Das mit den Cookies hört sich plausibel an - werde mal schauen, ob ich irgendwo herausbekomme, wie das geht.

Warum ich gegen die AGB verstosse, wenn ich deren API nutze um Daten meines Blogs herunterzuladen verstehe ich aber nicht ...

Hinweis von Abt vor 4 Jahren

Bitte keine Full Quotes [Hinweis] Wie poste ich richtig?

16.807 Beiträge seit 2008
vor 4 Jahren

Warum ich gegen die AGB verstosse, wenn ich deren API nutze um Daten meines Blogs herunterzuladen verstehe ich aber nicht ...

Weil Tumblr laut AGB den automatisierten Zugriff einzig und allein auf die API-Schnittstellen erlaubt, wie viele andere Webseiten auch.
Die von Dir angezeigte Webseite (mit dem Cookie) gehört nicht dazu.

droerick Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Hmmm ... also ist das was tumblr selber hier schreiben veraltet, bzw. die API Version 1 darf nicht mehr verwendet werden?
https://www.tumblr.com/docs/en/api/v1

Hinweis von Abt vor 4 Jahren

Erneut: bitte keine Full Quotes.
[Hinweis] Wie poste ich richtig?

16.807 Beiträge seit 2008
vor 4 Jahren

Die aktuelle API Version von Tumblr ist V2; Du verlinkst auf V1.

Evtl. ist das mit dem Cookie in V1 auch by design. I dont know.

droerick Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Genau. Ich hatte in einem Entwicklerforum von tumblr gelesen, dass die V1 nicht weiterentwickelt wird und die Funktionen, für die man sich authentifizieren muss (Posten, Antworten, ...) aus Version 1 nicht mehr funktionieren. Die Funktionen, für die man sich NICHT anmelden muss bleiben bestehen. Das war jedenfalls die Aussage eines Beitrags aus 2012 oder 2013.

V2 ist aktuell. Weil mir die V1 aber ausreicht und im ersten Moment nicht so aufwändig erscheint (bin ein bisschen eingerostet, was das Coding angeht) dachte ich, ich starte mal damit und schwenke später vielleicht zu V2 um ...

16.807 Beiträge seit 2008
vor 4 Jahren

Jo, dann verwende sie einfach, solange sie noch existiert 😉