Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   TRestRequest mit JSON im Body (https://www.delphipraxis.net/203512-trestrequest-mit-json-im-body.html)

TheProfi 25. Feb 2020 13:48

TRestRequest mit JSON im Body
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi zusammen,
wahrscheinlich zu blöd es zu verstehn. Ich bekomme keinen vernüftigen Post mit einem JSON im Body hin. Mit Postman funktioniert es.

Hier mal die Postman Einstellungen mit den erfolgreichen Response Content - Siehe Anhang

Hier die API Beschreibung:
Anzeigen von Szenario Konfigurationen

/api/alarm/v1/scenario/config/list

Mittels HTTP POST Request mit dem Header: Content-Type: application/json auf die oben angebene URL kann man Szenario Konfiguration abrufen.

username: string - Pflichtfeld - Benutzername
password: string - Pflichtfeld - Passwort
customerIds: Liste von strings - Pflichtfeld - Kundennummer

Ein Beispiel:

{
"username" : "myUser",
"password" : "mySuperSecretPwd",
"customerIds" : ["100027"],
}



Und hier mein Versuch der immer HTTP-Code 406 zurück :(

Code:
procedure TForm1.Button2Click(Sender: TObject);
var
  RESTClient: TRESTClient;
  RESTRequest: TRESTRequest;
  RESTResponse: TRESTResponse;
  slCustomerIds: TStringlist;
begin
  try
    RESTClient := TRESTClient.Create(nil);
    RESTClient.BaseURL := 'https://api.blaulichtsms.net/blaulicht/api/alarm/v1/scenario/config/list';
    try
      RESTResponse := TRESTResponse.Create(nil);
      RESTRequest := TRESTRequest.Create(nil);
      RESTRequest.Client := RESTClient;
      RESTRequest.Response := RESTResponse;

      RESTRequest.Method := rmPOST;
//      RESTRequest.Resource := 'api/alarm/v1/scenario/config/list';
      RESTRequest.AddParameter('Content-Type', 'application/json', pkHTTPHEADER, [poDoNotEncode]);
      try
        slCustomerIds := TStringlist.Create;
        slCustomerIds.Add('{');
        slCustomerIds.Add('"username" : "ag-api-contechnet",');
        slCustomerIds.Add('"password" : "xxxxx",');
        slCustomerIds.Add('"customerIds" : ["xxxxx"]');
        slCustomerIds.Add('}');
      finally
        RESTRequest.AddParameter('Body', slCustomerIds.Text, pkREQUESTBODY, [poDoNotEncode]);
        slCustomerIds.Free;
      end;
      RESTRequest.Execute;
      if RESTResponse.Status.Success then
        ShowMessage(RESTResponse.Content);
    finally
      RESTResponse.Free;
      RESTRequest.Free;
    end;
  finally
    RESTClient.Free;
  end;
end;
RATLOS....

Neutral General 25. Feb 2020 13:51

AW: TRestRequest mit JSON im Body
 
Benutz mal AddBody statt AddParameter

TheProfi 25. Feb 2020 14:47

AW: TRestRequest mit JSON im Body
 
Zitat:

Zitat von Neutral General (Beitrag 1458325)
Benutz mal AddBody statt AddParameter

Funktioniert leider auch nicht...

Code:
      try
        slCustomerIds := TStringlist.Create;
        slCustomerIds.Add('{');
        slCustomerIds.Add('"username" : "ag-api-contechnet",');
        slCustomerIds.Add('"password" : "xxxxx",');
        slCustomerIds.Add('"customerIds" : ["xxxxx"]');
        slCustomerIds.Add('}');
      finally
       [B] RESTRequest.AddBody(slCustomerIds.Text,ctApplication_Json);[/B]
        slCustomerIds.Free;
      end;

Pet04 25. Feb 2020 14:59

AW: TRestRequest mit JSON im Body
 
Hallo,

habe auch lange gebraucht.
Bei mir funktioniert es mit:

Code:
RestRequest.AddPair('password', 'xxxxx');

Grüße

TheProfi 25. Feb 2020 15:04

AW: TRestRequest mit JSON im Body
 
Zitat:

Zitat von Pet04 (Beitrag 1458337)
Hallo,

habe auch lange gebraucht.
Bei mir funktioniert es mit:

Code:
RestRequest.AddPair('password', 'xxxxx');

Grüße


Es soll aber im Body stehen oder versteh ich etwas nicht.

Neutral General 26. Feb 2020 10:11

AW: TRestRequest mit JSON im Body
 
Fehlt dir vielleicht ein Accept Header? Laut Internet bedeutet der 406 Code sowas:

https://developer.mozilla.org/en-US/...TTP/Status/406


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