Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Discord "message": "Cannot send an empty message", "code": 50006 (https://www.delphipraxis.net/203394-discord-message-cannot-send-empty-message-code-50006-a.html)

ScharfeMietze 13. Feb 2020 14:24


Discord "message": "Cannot send an empty message", "code": 50006
 
Hey Leute,
ich scheitre gerade an Discord. Ich habe einen Webhook erstellt.
Ich schaffe es aber nicht eine einfache Message zu senden.
Weder mit net noch mit Indy
Json String ist valide und der Content type ist auf 'application/json'
Weder mit einem Stream noch mit einer TStringlist. funktioniert es.

Der Code
Delphi-Quellcode:
procedure TForm5.btn1Click(Sender: TObject);
var
  LsList: TStringList;
  LResponse:string;
  LSStream: TStringStream;
const
  LContent = '{"content": "Test"}';
begin
LsList := TStringList.Create;
LSStream:= TStringStream.Create(LContent, TEncoding.UTF8);
  try
  LResponse:= nthtpclnt1.get(FUrl).ContentAsString();
  mmo1.Lines.Add('0 ' + LResponse);

  LsList.DefaultEncoding.UTF8;
  LsList.Add(LContent);
  nthtpclnt1.ContentType:= 'application/json';


  LResponse:= nthtpclnt1.Post(FUrl,LSStream).ContentAsString();
  mmo1.Lines.Add('1 ' + LResponse);
  LResponse:= nthtpclnt1.Post(FUrl,LsList).ContentAsString();
  mmo1.Lines.Add('2 ' + LResponse);
  finally
    LsList.Free;
    LSStream.Free;
  end; // try
end;
btn2
Delphi-Quellcode:
procedure TForm5.btn2Click(Sender: TObject);
var
  params: TStringStream;
  LIndy: TIdHTTP;
  LResponse:string;
const
  LContent = '{"content": "Test"}';
begin
  LIndy:= TIdHTTP.Create();
  params := TStringStream.Create(LContent, TEncoding.UTF8);
  try
    LIndy.Request.ContentType := 'application/json';
    LIndy.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
    LResponse:= LIndy.Post(FUrl, params);
  finally
    LIndy.Free;
    params.Free;
  end;
  mmo1.Lines.Add('3 ' + LResponse);
end;

Die Antworten
Delphi-Quellcode:
0 {"type": 1, "id": "67713562xxxxx", "name": "Test", "avatar": null, "channel_id": "677135529xxxx", "guild_id": "640861371927xxxxx", "token": "JlWiT1BTTWBmMxzbjoyEdeuIBv8A8Vj3bPBJxxxxxxxx"}

2 {"message": "Cannot send an empty message", "code": 50006}
3
Wahrscheinlich ist irgendwo ein simpler Fehler den ich gerade übersehe.
Sieht wer meinen Fehler?
Dank die SM:wink:

Moombas 13. Feb 2020 14:32

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Bei deinem btn1 zumindest sollten die ' weg, wenn ihc mich nicht irre:

LSStream:= TStringStream.Create('LContent', TEncoding.UTF8);

ScharfeMietze 13. Feb 2020 14:35

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Ja, hatte ich gerade schon berichtigt. Dann bekomme ich ein leeres Ergebnis.

DieDolly 13. Feb 2020 14:52

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Delphi-Quellcode:
LResponse:= LIndy.Post(FUrl, params);
Wo wird params denn befüllt?

ScharfeMietze 13. Feb 2020 14:59

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Zitat:

Zitat von DieDolly (Beitrag 1457398)
Delphi-Quellcode:
LResponse:= LIndy.Post(FUrl, params);
Wo wird params denn befüllt?

Delphi-Quellcode:
const
  LContent = '{"content": "Test"}';
Delphi-Quellcode:
params := TStringStream.Create(LContent, TEncoding.UTF8);

DieDolly 13. Feb 2020 15:00

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Aber die kompletten Daten fehlen doch oder nicht?

Ignorier das. Ich sehe jetzt erst
Delphi-Quellcode:
LContent = '{"content": "Test"}';

ScharfeMietze 13. Feb 2020 15:02

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
:-d:-d:-d
Zitat:

Zitat von diedolly (Beitrag 1457400)
aber die kompletten daten fehlen doch oder nicht?

ignorier das. Ich sehe jetzt erst
Delphi-Quellcode:
lcontent = '{"content": "test"}';

:-d:-d

Klaus01 13. Feb 2020 15:08

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
mag vielleicht etwas abwegig sein.
Aber setze den Positionszeiger von LStream mal auf die Nullte Position.
Delphi-Quellcode:
LStream.seek(0);
Grüße
Klaus

ScharfeMietze 13. Feb 2020 15:18

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Zitat:

Zitat von Klaus01 (Beitrag 1457403)
mag vielleicht etwas abwegig sein.
Aber setze den Positionszeiger von LStream mal auf die Nullte Position.
Delphi-Quellcode:
LStream.seek(0);
Grüße
Klaus

[dcc32 Fehler] Unit5.pas(54): E2250 Es gibt keine überladene Version von 'Seek', die man mit diesen Argumenten aufrufen kann
leider nicht ..
Delphi-Quellcode:
mit Position := 0
bekomme ich ein leeres Ergebnis als Antwort

Klaus01 13. Feb 2020 15:26

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
soory mein Fehler:

Delphi-Quellcode:
LStream.seek(soBeginning);
aber wenn Position schon nicht hilft...

Grüße
Klaus

ScharfeMietze 13. Feb 2020 15:38

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Zitat:

Zitat von Klaus01 (Beitrag 1457406)
soory mein Fehler:

Delphi-Quellcode:
LStream.seek(soBeginning);
aber wenn Position schon nicht hilft...

Grüße
Klaus

hehe,
auch hier das gleiche ergebnis...
[dcc32 Fehler] Unit5.pas(54): E2250 Es gibt keine überladene Version von 'Seek', die man mit diesen Argumenten aufrufen kann

Klaus01 13. Feb 2020 18:31

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
nur zur Korrektur:

Delphi-Quellcode:
LSStream.seek(0,soFromBeginning);
oder
Delphi-Quellcode:
params.seek(0,soFromBeginning);

ScharfeMietze 13. Feb 2020 18:37

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Zitat:

Zitat von Klaus01 (Beitrag 1457424)
nur zur Korrektur:

Delphi-Quellcode:
LSStream.seek(0,soFromBeginning);
oder
Delphi-Quellcode:
params.seek(0,soFromBeginning);

Keine Fehlermeldung mehr!, aber das Ergebnis der Antwort ist immer noch das Gleiche
Delphi-Quellcode:

2 {"message": "Cannot send an empty message", "code": 50006}
3

Klaus01 13. Feb 2020 18:42

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
.. kannst Du aufzeichen/sehen (Wireshark, Fiddler) was zum Server geschickt wird?
Vielleicht stimmt ja mit der Nachricht etwas nicht.

Grüße
Klaus

DieDolly 13. Feb 2020 18:44

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Versuch das mal so. StringList statt StringStream und ein explizites Add().
Delphi-Quellcode:
procedure TForm5.btn2Click(Sender: TObject);
var
  params: TStringList;
  LIndy: TIdHTTP;
  LResponse:string;
begin
  LIndy:= TIdHTTP.Create();
  params := TStringList.Create;
  try
    params.Add('{"content": "Test"}');
    LIndy.Request.ContentType := 'application/json';
    LIndy.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
   
    LResponse := LIndy.Post(FUrl, params);
  finally
    LIndy.Free;
    params.Free;
  end;
end;

ScharfeMietze 14. Feb 2020 10:31

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Zitat:

Zitat von Klaus01 (Beitrag 1457426)
.. kannst Du aufzeichen/sehen (Wireshark, Fiddler) was zum Server geschickt wird?
Vielleicht stimmt ja mit der Nachricht etwas nicht.

Grüße
Klaus

Nein ich kann hier diese Tools nicht aufspielen ... Leider

ScharfeMietze 14. Feb 2020 10:34

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Zitat:

Zitat von DieDolly (Beitrag 1457427)
Versuch das mal so. StringList statt StringStream und ein explizites Add().
Delphi-Quellcode:
procedure TForm5.btn2Click(Sender: TObject);
var
  params: TStringList;
  LIndy: TIdHTTP;
  LResponse:string;
begin
  LIndy:= TIdHTTP.Create();
  params := TStringList.Create;
  try
    params.Add('{"content": "Test"}');
    LIndy.Request.ContentType := 'application/json';
    LIndy.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
   
    LResponse := LIndy.Post(FUrl, params);
  finally
    LIndy.Free;
    params.Free;
  end;
end;

Das war meine übliche Vorgehensweise
aber leider funzt auch das nicht...
Delphi-Quellcode:
var
  params: TStringStream;
  LIndy: TIdHTTP;
  LResponse:string;
   LsList: TStringList;
const
  LContent = '{"content": "Test"}';
begin
  LIndy:= TIdHTTP.Create();
  params := TStringStream.Create(LContent, TEncoding.UTF8);
  LsList := TStringList.Create;
  try
    params.seek(0,soFromBeginning);
    LsList.DefaultEncoding.UTF8;
    LsList.Add('{"content": "Test"}');
    LIndy.Request.ContentType := 'application/json';
    LIndy.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
    LResponse:= LIndy.Post(FUrl, params);
    mmo1.Lines.Add('3 ' + LResponse);
    try
      LResponse:= LIndy.Post(FUrl, LsList);
    except
      on E : Exception do
      begin
        mmo1.Lines.Add(E.Message);
      end;
    end;
    mmo1.Lines.Add('4 ' + LResponse);
  finally
    LIndy.Free;
    params.Free;
    LsList.Free;
  end;

end;
Ergebnis
Delphi-Quellcode:

HTTP/1.1 400 BAD REQUEST
4

DieDolly 14. Feb 2020 11:00

AW: Discord "message": "Cannot send an empty message", "code": 50006
 
Das was da oben steht würde ich erstmal komplett löschen. Das ist eine Mischung aus beiden.
Am besten suchst du dir einen großen und vernünftigen Discord-Server wo sich die Leute mit sowas befassen und fragst da mal nach.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 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