Einzelnen Beitrag anzeigen

Benutzerbild von TheProfi
TheProfi

Registriert seit: 30. Mai 2005
Ort: Emden
42 Beiträge
 
Delphi 10.3 Rio
 
#1

TRestRequest mit JSON im Body

  Alt 25. Feb 2020, 14:48
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....
Miniaturansicht angehängter Grafiken
2020.02.25_14h39m25s_01164001.png  
Georg Reimann
------------------------------------------------------
Sicher ist nur eines, dass nichts sicher ist...

Geändert von TheProfi (25. Feb 2020 um 15:43 Uhr)
  Mit Zitat antworten Zitat