Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy HTTPClient Post umlaute (https://www.delphipraxis.net/214978-indy-httpclient-post-umlaute.html)

DelTurbo 16. Apr 2024 11:12

AW: Indy HTTPClient Post umlaute
 
Das ist LibreTranslate. Also das muss irgendwie gehen. Leider finde ich nichts darüber oder wieder zu doof zum suchen.

DelTurbo 16. Apr 2024 11:17

AW: Indy HTTPClient Post umlaute
 
Das sendet er bei UTF-8. Es kommt zwar ein 200 zurück aber halt L??nge

Code:
POST /translate HTTP/1.0
Connection: keep-alive
Content-Encoding: UTF-8
Content-Type: application/json
Content-Length: 105
Host: translate.lan:5000
Accept: application/json
User-Agent: 'User-Agent', 'Mozilla/5.0

{ "q": "L??nge 8,5 cm","source": "de", "target": "en", "api_key": "#######"}HTTP/1.0 200 OK

anse 16. Apr 2024 11:19

AW: Indy HTTPClient Post umlaute
 
Probier doch mal mit einem separaten API client, z.B. https://www.postman.com/

DelTurbo 16. Apr 2024 11:49

AW: Indy HTTPClient Post umlaute
 
Mein letzter Post (hoffe ich). Mit Overbyte geht es auf anhieb. UTF8Encode() und absenden. Klappt.
Ob Indy da eventuell einen "kleinen" Fehler hat?

Sherlock 16. Apr 2024 11:55

AW: Indy HTTPClient Post umlaute
 
Mein persönlicher Geschmack war Indy nie. Ich hatte sehr mit denen gekämpft, als ich mit TCP/IP anfing...und mit den ICS hat es auf Anhieb geklappt. Die sind auch irgendwie mehr "delphisch" (vergleiche mit Pythons "pythonic").

jaenicke 16. Apr 2024 16:12

AW: Indy HTTPClient Post umlaute
 
Zitat:

Zitat von DelTurbo (Beitrag 1535787)
@jaenicke,

Zitat:

Zitat von DelTurbo (Beitrag 1535778)
Wandel ich es in UTF-8 um, bekomme ich z.b. statt L?nge, L??nge zurück.

Hab ich doch schon versucht.

Ich kann das nicht reproduzieren. Wenn ich den Text als UTF-8 schicke, kommt der auch mit Umlauten an. Auf dem Server habe ich das print_r verwendet wie du es geschrieben hast.
Delphi-Quellcode:
var
  Http: TIdHTTP;
  Data: TStringList;
begin
  Http := TIdHTTP.Create(Self);
  try
    Data := TStringList.Create;
    try
      Data.Add('{ "q": "Länge 8,5 cm","source": "de", "target": "en", "api_key": "#####"}');
      ShowMessage(Http.Post('http://www.familie-jaenicke.de/b.php', Data, IndyTextEncoding_UTF8));
    finally
      Data.Free;
    end;
  finally
    Http.Free;
  end;
end;
Da du keinen Quelltext gezeigt hast, kann ich auch nicht beurteilen, was bei dir falsch läuft.

DelTurbo 16. Apr 2024 16:15

AW: Indy HTTPClient Post umlaute
 
So wie ich gelesen habe, bin ich nicht der einzige mit diesem Fehler. Du hast eine andere Indy Version als ich. z.b. bei Delphi 2009 soll der Bug noch drin gewesen sein. Quelle der Info: https://entwickler-forum.de/forum/ar...te-mit-indy-10

Aber mit OverByte ging es sofort. Deswegen.......

jaenicke 16. Apr 2024 23:05

AW: Indy HTTPClient Post umlaute
 
Zitat:

Zitat von DelTurbo (Beitrag 1535824)
So wie ich gelesen habe, bin ich nicht der einzige mit diesem Fehler. Du hast eine andere Indy Version als ich. z.b. bei Delphi 2009 soll der Bug noch drin gewesen sein.

Ich habe es eben mit Delphi 2007 ausprobiert. Es ging ebenfalls sofort:
Delphi-Quellcode:
var
  Http: TIdHTTP;
  Data: TStringList;
begin
  Http := TIdHTTP.Create(Self);
  try
    Data := TStringList.Create;
    try
      Data.Add('{ "q": "Länge 8,5 cm","source": "de", "target": "en", "api_key": "#####"}');
      ShowMessage(Http.Post('http://www.familie-jaenicke.de/b.php', Data));
    finally
      Data.Free;
    end;
  finally
    Http.Free;
  end;
end;
Wie schon geschrieben: Ohne deinen Code kann man dir auch nur sehr schlecht helfen. Darum ist es immer am besten ein Beispielprojekt oder Beispielcode zu zeigen, mit dem du es versucht hast...

ICS ist eine gute Wahl, aber mit Indy geht es auch.

Michael II 17. Apr 2024 00:50

AW: Indy HTTPClient Post umlaute
 
Zitat:

Zitat von jaenicke (Beitrag 1535829)
Es ging ebenfalls sofort:

Vielleicht wäre es auch gut zu klären, wie der Input Server seitig verarbeitet wird.
Dein Code läuft mit deiner URL/deinem PHP Skript super und ä kommt an. Wenn man aber den Code zum Beispiel auf 'http://httpbin.org/post' loslässt, dann gibt der Server ä Unicode codiert zurück:
"{ \"q\": \"L\u00e4nge 8,5 cm\",\"source\": \"de\",

jaenicke 17. Apr 2024 05:43

AW: Indy HTTPClient Post umlaute
 
Eben das ist der Punkt. Wenn man nicht weiß, wie der Quelltext aussieht, kann man nicht sagen, woran es liegt. Wenn ich ein konkretes Beispiel habe, kann ich sehen oder auch testen was raus geht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.
Seite 2 von 4     12 34      

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