[erl.] HTTPSend Error 400

Alle Fragen zur Netzwerkkommunikation

[erl.] HTTPSend Error 400

Beitragvon LazyBone » 9. Jun 2016, 10:49 [erl.] HTTPSend Error 400

Hey Forum!
Nach etwaiger Suche lande ich mal wieder hier und weiß nicht weiter....

Möchte mir Daten per Telegram aufs Handy senden und nutze dazu die TelegramApi.
Die "Sendung" nehme ich mit HTTPSend vor.

Exemplarisch:

Code: Alles auswählen
    ...
    BotAnswer := TStringlist.Create;
    HTTP := THTTPSend.Create;
    BotAnswer.Add('Accept: text/html');
    BotAnswer.Add('Accept-Charset: ISO-8859-2,utf-8');
    HTTP.Headers.AddStrings(BotAnswer);
    BotAnswer.Clear;
    ...
    url_str := 'https://api.telegram.org/'+BotID+'/sendmessage?chat_id='+user_id+'&text='+tmessage;
    HTTP.HTTPMethod('GET', url_str);
 


Manchmal funktioniert es, manchmal nicht.
Wenn es nicht funktioniert, ist die Antwort

Code: Alles auswählen
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.10.0</center>
</body>
</html>


oder
Code: Alles auswählen
 
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.9.1</center>
</body>
</html>


Ersetze vor dem Senden schon alle Umlaute durch entsprechende Codes ...

Code: Alles auswählen
      newline = '%0D%0A';
      sz_code = '%C3%9F';// ß= 0X00DF = #223
      aes_code = '%C3%A4';// ä= 0X00E4 = #228


und bin mir trotzdem nicht sicher, ob es am charset liegt.
Wenn ich die Adresse ins Clipboard kopiere und in FF direkt eingebe, funktioniert es. Von daher schätze ich, es hat irgendetwas mit HTTPSend zu tun.

Jemand ähnliche Erfahrungen gemacht oder einen Tipp?
( den Artikel http://forum.lazarus.freepascal.org/index.php?topic=12737.0 habe ich schon gefunden, half mir in diesem Falle jedoch nicht weiter... :(

Danke für Eure Zeit!
____
Lazarus V1.6 (2016-02-14)
FPC: 3.0.0
x86_64-win64-win32/win64
Zuletzt geändert von LazyBone am 9. Jun 2016, 14:00, insgesamt 1-mal geändert.
LazyBone
 
Beiträge: 6
Registriert: 21. Apr 2016, 13:20

Beitragvon theo » 9. Jun 2016, 11:34 Re: HTTPSend Error 400

LazyBone hat geschrieben:( den Artikel http://forum.lazarus.freepascal.org/index.php?topic=12737.0 habe ich schon gefunden, half mir in diesem Falle jedoch nicht weiter... :(


Vielleicht doch.
Dort steht "This can happen if you go to a https page without the SSL."

Hast du ssl_openssl eingebunden und funktioniert das (DLL vorhanden)?
http://synapse.ararat.cz/doku.php/publi ... :sslplugin
theo
 
Beiträge: 8052
Registriert: 11. Sep 2006, 18:01

Beitragvon LazyBone » 9. Jun 2016, 12:24 Re: HTTPSend Error 400

Hallo theo,
danke für die Info, aber stimmt, das vergaß ich zu erwähnen. die unit ssl_openssl ist auch eingebunden und es funktioniert grundsätzlich... falls es etwas mit ssl zu tun haben sollte, was könnte man denn dagegen tun?
LazyBone
 
Beiträge: 6
Registriert: 21. Apr 2016, 13:20

Beitragvon theo » 9. Jun 2016, 13:14 Re: HTTPSend Error 400

Keine Ahnung.
Vielleicht mal EncodeURL aus synacode verwenden für die tmessage etc.
theo
 
Beiträge: 8052
Registriert: 11. Sep 2006, 18:01

Beitragvon LazyBone » 9. Jun 2016, 14:00 Re: HTTPSend Error 400

Vielen Dank, theo, du bist ein Held!
Ich wusste leider nichts von der tollen Cleanup-Funktion.
Jetzt kann ich mir sicher sein, dass es irgednwie an der Codierung liegt, denn jetzt sendet er alle Nachrichten, nicht nur spezielle. Jedoch werden nun bei dieser Variante alle Umlaute gefragezeichnet :(
Aber da findet sich ja vielleicht noch ein workaround...
Auch die Codierung der umlaute wird nun übergangen, das finde ich recht h%C3%A4sslich, aber vielleicht finde ich nun einen Weg.

Danke vielmals!!
LazyBone
 
Beiträge: 6
Registriert: 21. Apr 2016, 13:20

• Themenende •

Zurück zu Netzwerk



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried