AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Error 404 mit TIdHTTP

Ein Thema von Maekkelrajter · begonnen am 27. Aug 2020 · letzter Beitrag vom 29. Aug 2020
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Error 404 mit TIdHTTP

  Alt 28. Aug 2020, 09:26
Mal von all dem abgesehen...warum nimmst du nicht die öffentlich verfügbare WebAPI?
Da kannst du ganz bequem per REST dir JSON-Daten zu allen möglichen holen:

https://developer.spotify.com/documentation/web-api/

Ist auch relativ simpel und gut dokumentiert.
  Mit Zitat antworten Zitat
Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
157 Beiträge
 
Delphi 12 Athens
 
#2

AW: Error 404 mit TIdHTTP

  Alt 28. Aug 2020, 10:13
Mal von all dem abgesehen...warum nimmst du nicht die öffentlich verfügbare WebAPI?
Da kannst du ganz bequem per REST dir JSON-Daten zu allen möglichen holen:

https://developer.spotify.com/documentation/web-api/

Ist auch relativ simpel und gut dokumentiert.
Als ich mich vor Jahren erstmalig mit der Materie beschäftigt habe, war, wenn ich mich recht erinnere, die Spotify WebAPI nur für Inhaber eines Premium-Accounts verfügbar. Das scheint mittlerweile anders zu sein. Schon seit Tagen beschäftige ich mich mit dieser durchaus attraktiven Alternative. Auch wenn es 'relativ simpel' ist, bedeutet das für mich doch weitgehend Neuland. Schau'n wir mal...
Mein aktuelles Problem hatte ich ja eigentlich schon gelöst bzw. umgangen. Mich interessierte eben, wieso einige Browser eine Seite, die angeblich nicht existiert, dennoch ausgeben können

Gruß LP
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#3

AW: Error 404 mit TIdHTTP

  Alt 28. Aug 2020, 11:27
Einige Browser zeigen bei einem HTTP-ErrorCode eine Fehlerseite an.
Andere Browser zeigen die Seite mit dem StatusCode nur an, wenn es keinen Kontent gibt.

Jetzt könnte man als WebEntwickler gemein sein (oder doof) und trotz ausgabe eines Contents dennoch als Status 404 zurück geben.

Es kann aber auch sein, dass die Webseite (HTTP Header/JavaScript/...) eine Erkennung für Browser hat und je nach Browser.Model/Version ein bissl was anderes macht.
Sowas kann sogar direkt im WebServer und nicht erst clientseitig sein, also Anhand der Browser-Kennung im Request-Header.


Außerdem wird der gesamte "Inhalt" der genannten Webseite via JavaScript nachgeladen.
Dein Download verarbeitet kein JavaScript, also bleibt da so oder so nur eine nutzlose HTML-Struktur übrig, selbst wenn du das 404-Problem behebst.

Einzige "richtige" Lösung wäre z.B. eine zugängliche REST-API des Seitenbetreibers.
Außerdem glaube ich kaum, dass der Seitenbetreiber das Runterladen, Parsen und Auslesen der Webseiten erlaubt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Aug 2020 um 11:33 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#4

AW: Error 404 mit TIdHTTP

  Alt 28. Aug 2020, 11:39
Die idhttp hat beim Request auch das Attribut UserAgent. Der Defaultwert dort ist nicht immer unbedingt geeignet. Da gibt es durchaus Server, die eine Kommunikation mit soeinem UserAgent ablehnen.

Gibt dort doch mal den Wert für einen der von Dir genutzten Browser, die die gewünschte Seite anzeigen, an.

Dises Seite zeigt Dir den UserAgent des Browsers an, mit dem Du die Seite aufrufst: https://www.whatismybrowser.com/dete...-my-user-agent

Den Wert kannst Du per Copy&Paste in Deine idHTTP-Komponente übernehmen.

Eventuell machst Du Dir das aber auch konfigurierbar, so dass Du den UserAgent über eine Eingabe setzen kannst, damit bei einer erforderlichen Änderung dieses Wertes, das Programm nicht neu erstellt werden muss.
  Mit Zitat antworten Zitat
Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
157 Beiträge
 
Delphi 12 Athens
 
#5

AW: Error 404 mit TIdHTTP

  Alt 28. Aug 2020, 22:23
Die idhttp hat beim Request auch das Attribut UserAgent. Der Defaultwert dort ist nicht immer unbedingt geeignet. Da gibt es durchaus Server, die eine Kommunikation mit soeinem UserAgent ablehnen.
Das ist genau die Lösung, aber dadurch werden auch gnadenlos die Schwächen des Designs meines Programms bloßgelegt: Der Server liefert an den 'modernen' UserAgent andere HTML - Sources, die von meinem Programm nicht mehr korrekt ausgelesen werden können. Ich werde wohl nicht darum herumkommen, mich intensiver mit der Spotify WebAPI zu beschäftigen. Aber das wird eine harte Nuss, alldieweil ich da wohl bei Null anfangen muss. Die API ist zwar wirklich gut dokumentiert, aber Begriffe wie 'REST' und 'JSON' sind für mich (bisher) böhmische Dörfer. Ich habe auch bisher nur ein einziges Delphi - Beispiel mit Einbindung der Spotify WebAPI gefunden: https://github.com/jmarioguedes/CodeRageBrasil3_REST. Das läßt sich zwar kompilieren und läuft, wirft aber andauernd Exceptions, mit denen ich (noch) nichts anfangen kann, und zu allem Überfluss enthält der Sourcecode auch noch Bezeichner und Kommentare auf portugiesisch. Falls jemand noch eine bessere Quelle oder ein gutes Tutorial kennt, her damit!

Gruß LP

Geändert von Maekkelrajter (28. Aug 2020 um 22:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
905 Beiträge
 
Delphi 12 Athens
 
#6

AW: Error 404 mit TIdHTTP

  Alt 29. Aug 2020, 07:51
Die API ist zwar wirklich gut dokumentiert, aber Begriffe wie 'REST' und 'JSON' sind für mich (bisher) böhmische Dörfer.
Lass dich davon aber nicht entmutigen. Der Knackpunkt ist dabei in der Regel die Authentifizierung bzw. die Anmeldung an dem Service. Der Rest ist dann kein Problem mehr.

"REST" ist dann oft nicht viel mehr als eine HTTP-Anfrage mit einer ganzen Reihe von GET-Parametern, und die Antwort kommt dann nicht als HTML, sondern in einem anderen Format, oft halt JSON (was auch einfach nur ein strukturiertes Textformat ist). Aber wenn du dir Methoden gebaut hast, um HTML-Code für deine Ansprüche ausreichend zu parsen, dann wirst du das mit der JSON-Antwort auch hinbekommen. Man kann da vollständige Parser drauf ansetzen, oder aber für ein paar Daten auch einfach mit Pos, PosEx und Copy, um die gewünschten Infos zu bekommen.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.174 Beiträge
 
Delphi 12 Athens
 
#7

AW: Error 404 mit TIdHTTP

  Alt 29. Aug 2020, 09:14
Such doch nach dem RestDebugger, der müsste bei deinem Delphi dabei sein.
Damit kann man Schnittstellen schön ausprobieren, und er erzeugt auch entsprechenden Code mit dem man weiterarbeiten kann.
Allerdings nicht Indy, aber zumindest ist dann der Zugriff geklärt.
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz