AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

URLDownloadToFile und umlaute

Ein Thema von venice2 · begonnen am 23. Feb 2021 · letzter Beitrag vom 24. Feb 2021
Antwort Antwort
Seite 1 von 2  1 2      
venice2
(Gast)

n/a Beiträge
 
#1

URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 07:58
mein Query String.
'https://api.themoviedb.org/3/search/movie?api_key=MyKey&language=de&query=Drachenzähme n leicht gemacht Die guten alten Zeiten'
funktioniert nicht
Hingegen
'https://api.themoviedb.org/3/search/movie?api_key=MyKey&language=de&query=Drachenzaehm en leicht gemacht Die guten alten Zeiten'
schon.

woran kann das liegen. Muss ich da irgendwas besonderes beachten?
Delphi-Quellcode:
function TTheMDB.BuildSearchMovieQuery(MovieTitle: string; UseQueryMode: BOOL): string;
begin

  Result := '';
  if not UseQueryMode then
    Result := 'https://api.themoviedb.org/3/search/movie?api_key='
  else
    Result := 'https://api.themoviedb.org/3/search/tv?api_key=';

  Result := Result + GetApiKey;
  Result := Result + '&language=';
  Result := Result + UseThisLanguage;
  Result := Result + '&query=';
  Result := Result + MovieTitle;
end;
Url := BuildSearchMovieQuery(MovieTitle, QueryMode);
Ist dann der Query String den ich sende.

Furchtbar das die immer an ihrer Webseite Rumschrauben.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 08:05
https://www.urlencoder.org/ , probier die Möglichkeiten einmal durch, dann weißt Du, wie Du den QueryString kodieren musst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#3

AW: URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 08:11
https://www.urlencoder.org/ , probier die Möglichkeiten einmal durch, dann weißt Du, wie Du den QueryString kodieren musst.
Ich habe es schon Danke.. UTF8String!
Hatte vorher mit WideString versucht brachte aber auch nichts.

Delphi-Quellcode:
function TTheMDB.BuildSearchMovieQuery(MovieTitle: string; UseQueryMode: BOOL): UTF8String;
begin

  Result := '';
  if not UseQueryMode then
    Result := 'https://api.themoviedb.org/3/search/movie?api_key='
  else
    Result := 'https://api.themoviedb.org/3/search/tv?api_key=';

  Result := Result + GetApiKey;
  Result := Result + '&language=';
  Result := Result + UseThisLanguage;
  Result := Result + '&query=';
  Result := Result + MovieTitle;
end;

var
  Url: UTF8String;
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 08:18
Ich sehe leider nicht, wie/womit du die Daten postest.

Hast du eventuell vergessen den String zu encodieren? Wenn Ja, dann liegt es am ä.

Zum Beispiel mit Indy:

Delphi-Quellcode:
uses IDURI;
...
TIdURI.URLEncode('https://api.themoviedb.org/3/search/movie?api_key=MyKey&language=de&query=Drachenzähme n leicht gemacht Die guten alten Zeiten');

[[ Wenn ein Zeichen z nicht im Bereich 'a'..'z', 'A'..'Z', '0'..'9' liegt (in deinem Beispiel ä), muss z so gesendet werden: ( '%' + IntToHex(ord(z), 2)). ]]
Michael Gasser
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#5

AW: URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 08:21
Ich sehe leider nicht, wie/womit du die Daten postest.

Hast du eventuell vergessen den String zu encodieren? Wenn Ja, dann liegt es am ä.

Zum Beispiel mit Indy:

Delphi-Quellcode:
uses IDURI;
...
TIdURI.URLEncode('https://api.themoviedb.org/3/search/movie?api_key=MyKey&language=de&query=Drachenzähme n leicht gemacht Die guten alten Zeiten');

[[ Wenn ein Zeichen z nicht im Bereich 'a'..'z', 'A'..'Z', '0'..'9' liegt (in deinem Beispiel ä), muss z so gesendet werden: ( '%' + IntToHex(ord(z), 2)). ]]
Steht oben im Beitrag.
if (URLDownloadToFile(nil, PWideChar(Url), PWideChar(TxtFile), 0, nil) = S_OK) then

Danke für die Info mit Utf8String geht es.
Nope geht doch nicht.

Muß mich dann wohl mit dem enkodieren mal beschäftigen.

Sehe gerade du hast die Lösung ja schon gepostet..
Danke!

Geändert von venice2 (23. Feb 2021 um 08:43 Uhr)
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#6

AW: URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 16:52
Oh schön der Klassiker.

Du übermittelst ja die Daten in der URL. URL sind als ASCII spezifiziert.
D.h. alles was das 8te Bit gesetzt hat, muss URL-Encoded werden.

Dann kommen wir zu dem Encodig der Texte - also UTF-8, UTF-16, UCS oder vielleicht ISO-8859-1 ?



In dieser RFC findet man eine Antwort:
https://tools.ietf.org/html/rfc3986#section-2.5
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#7

AW: URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 18:12
Wenn du mORMot SynCommons verwendest, mache folgendes:
Delphi-Quellcode:
const
  URL_TEMPLATE = 'https://api.themoviedb.org/3/search/movie?api_key=%&language=%&query=%';

var
  url: SockString;
begin
  url := StringToAnsi7(FormatString(URL_TEMPLATE, [GetApiKey, UseThisLanguage, MovieTitle]))
...
Nicht vergessen, je nach verwendeten String-Typ, GetApiKey(), UseThisLanguage() und MovieTitle() notfalls in StringToUtf8() einpacken.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#8

AW: URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 18:17
Wenn du mORMot SynCommons verwendest, mache folgendes:
Delphi-Quellcode:
const
  URL_TEMPLATE = 'https://api.themoviedb.org/3/search/movie?api_key=%&language=%&query=%';

var
  url: SockString;
begin
  url := StringToAnsi7(FormatString(URL_TEMPLATE, [GetApiKey, UseThisLanguage, MovieTitle]))
...
Nicht vergessen, je nach verwendeten String-Typ, GetApiKey(), UseThisLanguage() und MovieTitle() notfalls in StringToUtf8() einpacken.

Bis bald...
Thomas
Danke.. Ich habe meinen eigenen Parser für JSon für den TMDB Support. (Mit kleinen problemen)
Ich würde das gerne auf mORMot SynCommons portieren aber im Moment etwas zu hoch für mich.
Die Idee Ansicht ist aber
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#9

AW: URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 18:39
Danke.. Ich habe meinen eigenen Parser für JSon für den TMDB Support.
Es geht nicht um die JSON Funktionen in SynCommons, sondern hier um die Funktion StringToAnsi7(). Damit passt die URL-Codierung. Probiere mein Beispiel einfach mal aus.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#10

AW: URLDownloadToFile und umlaute

  Alt 23. Feb 2021, 18:50
Danke.. Ich habe meinen eigenen Parser für JSon für den TMDB Support.
Es geht nicht um die JSON Funktionen in SynCommons, sondern hier um die Funktion StringToAnsi7(). Damit passt die URL-Codierung. Probiere mein Beispiel einfach mal aus.

Bis bald...
Thomas
Ok werde es mal testen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz