Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   XLM Payload als Post (https://www.delphipraxis.net/189945-xlm-payload-als-post.html)

strom 16. Aug 2016 12:44

AW: XLM Payload als Post
 
Hallo,

immer die gleiche Meldung :? was könnte ich noch ausprobieren?

Zitat:


{"status":"error","errors":["unauthorized"]} 16.08.2016 , 13:38:46

Delphi-Quellcode:
function ExecuteAPI: string;
var
 http: TIdHttp;
 params: TStringList;
 iRun: Integer;
begin
 try
  http := TIdHTTP.Create(nil);
  params := TStringList.Create;
  params.Add('<?xml version="1.0" encoding="UTF-8"?>');
  params.Add('<fireboardOperation version="1.0">');
  params.Add('<uniqueId>123456789</uniqueId>');
  params.Add('<basicData>');
  params.Add('<externalNumber>OF120131</externalNumber>');
  params.Add('<keyword>F2</keyword>');
  params.Add('<announcement>Wohnungsbrand</announcement>');
  params.Add('<location>Test, Teststraße 1</location>');
  {params.Add('<geo_location>');
  params.Add('<latitude>123456</latitude>');
  params.Add('<longitude>654321</longitude>');
  params.Add('</geo_location>');}
  params.Add('<timestampStarted>');
  params.Add('<long></long>');
  params.Add('</timestampStarted>');
  params.Add('<situation>Notruf</situation>');
  params.Add('</basicData>');
  params.Add('</fireboardOperation>');
  http.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  Form3.Memo8.Lines.Insert(0,http.Post('https://login.fireboard.net/api?authkey=123456789&call=operation_Data', params)+' '
  + FormatDateTime ('dd.mm.yyyy , hh:nn:ss', Now));
  //ShowMessage(params[iRun]);
 finally
  params.Free;
 end;
end;

-=ZGD=- 16. Aug 2016 12:47

AW: XLM Payload als Post
 
Entferne bitte das = aus deinem Auth-Key am Ende. Und deinen Schlüssel hier im Forum bitte auch ;-)

strom 16. Aug 2016 13:12

AW: XLM Payload als Post
 
Hallo ZGD :-)

Danke!

Jetzt bekomme ich eine neue Fehlermeldung zurück:

Code:

{"status":"error","errors":["xml error"]} 16.08.2016 , 14:11:07

-=ZGD=- 16. Aug 2016 13:36

AW: XLM Payload als Post
 
Ich weiß ;-)

das XML ist nicht "well-formed". Um solche Dinge zu testen, kannst du vorab dir ein Beispiel-XML aufbauen und durch XML-Validierungen laufen lassen. Danach Zeile für Zeile nach Delphi übertragen und ggf. anpassen.

Ich habe jetzt zum Beispiel nur dein Params-Objekt genommen.
Delphi-Quellcode:
params.saveToFile('D:\test.xml');
, durch die Validierung gejagt und gesehen, was falsch ist.

Code:
<?xml version="1.0" encoding="UTF-8" ?>
<fireboardOperation version="1.0">
<uniqueId>ZctEHN0zaUTo2HWpob3EK6L5fdrGY5hy</uniqueId>
<basicData>
<externalNumber>OF120131</externalNumber>
<keyword>F2</keyword>
<announcement>Wohnungsbrand</announcement>
<location>Test, Teststrasse 1</location>
<situation>Notruf</situation></basicData>
</fireboardOperation>
Grundsätzlich gilt: Was aufgemacht wird, muss zumacht werden. Du hast
Delphi-Quellcode:
<fireboardOperation version="1.0">
geöffnet, aber nicht geschlossen (letzte Zeile).

strom 16. Aug 2016 18:00

AW: XLM Payload als Post
 
hey,

nochmal zum Verständnis, habe ich doch gemach oder nicht?

Zitat:

<fireboardOperation version="1.0"> //geöffnet
Zitat:

</fireboardOperation> //geschlossen

strom 16. Aug 2016 18:17

AW: XLM Payload als Post
 
Hey,

Zitat:

Ich weiß

das XML ist nicht "well-formed". Um solche Dinge zu testen, kannst du vorab dir ein Beispiel-XML aufbauen und durch XML-Validierungen laufen lassen. Danach Zeile für Zeile nach Delphi übertragen und ggf. anpassen.

Ich habe jetzt zum Beispiel nur dein Params-Objekt genommen. params.saveToFile('D:\test.xml'); , durch die Validierung gejagt und gesehen, was falsch ist.

Habe ich jetzt gemacht(durch die Validieerung gejagt) ! "No errors found"

Aber bekomme immer noch die Meldung zurück:

Code:

{"status":"error","errors":["xml error"]} 16.08.2016 , 19:11:09

-=ZGD=- 16. Aug 2016 20:49

AW: XLM Payload als Post
 
Encoding.
Straße mit ß.
Versuch es mal mit Doppel-S.

strom 18. Aug 2016 07:03

AW: XLM Payload als Post
 
Guten Morgen ZGD,

leider immer noch die gleiche Meldung :cry:

vagtler 18. Aug 2016 07:18

AW: XLM Payload als Post
 
Vergleiche mal einen funktionierenden Request mit einem nicht funktionierenden (z.B. mit http://www.telerik.com/fiddler).

mjustin 18. Aug 2016 07:55

AW: XLM Payload als Post
 
Zitat:

Zitat von vagtler (Beitrag 1345089)
Vergleiche mal einen funktionierenden Request mit einem nicht funktionierenden (z.B. mit http://www.telerik.com/fiddler).

Gute Idee, damit kann man auch sehen was tatsächlich als Payload über die Leitung geht.

strom 18. Aug 2016 09:01

AW: XLM Payload als Post
 
Oh...,

die Software ist aber sehr komplex! (bestimmt ein gutes Debug Programm)
Aber bis ich alle Funktionen verstanden habe, brauche ich ja ein halbes Jahr!

Was gibt es sonst noch für Optionen?

Zitat:

Vergleiche mal einen funktionierenden Request mit einem nicht funktionierenden (z.B. mit http://www.telerik.com/fiddler).

-=ZGD=- 18. Aug 2016 09:09

AW: XLM Payload als Post
 
Poste deine komplette Unit ;-)

strom 18. Aug 2016 09:14

AW: XLM Payload als Post
 
Hallo,

nochmal zum Telerik Fiddler Web Debugger.

Wenn ich was im Webbrowser eingebe wird ein Logfile (Telerik) erstellt!
Wenn ich was mit meinem Programm mache, passiert im Logfile (Telerik) nichts!

-=ZGD=- 18. Aug 2016 09:56

AW: XLM Payload als Post
 
Was ja klar ist, denn dein Programm hat keine Verbindung zu Telerik

Dafür musst du das Fadenkreuz (Any Process) benutzen und über deine Anwendung fahren.

strom 18. Aug 2016 10:17

AW: XLM Payload als Post
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo ZGD,

habe doch (siehe Bild) Einstellungen vorgenommen.

Danke, für Deine hartnäckigen Nerven 8-) !
Ich verstehe bald gar nichts mehr!

-=ZGD=- 18. Aug 2016 10:19

AW: XLM Payload als Post
 
Hm, dann gibts vllt ein Problem mit den Adaptern..ich hab Fiddler noch nie benutzt. Ich kann grad nur ins Blaue raten ;-)

strom 18. Aug 2016 10:31

AW: XLM Payload als Post
 
Alles .... :?,

am Adapter liegt es glaube ich nicht, alle anderen Funktionen "Socket" usw. funktioniert ja!
Der Browser usw. auch!

Wie gesagt, verstehe es nicht!

strom 18. Aug 2016 10:36

AW: XLM Payload als Post
 
Hier nochmal die Offizielle Anleitung zur Schnittstelle!
Vielleicht hat jemand noch eine andere Idee?

Der API Aufruf für Einsatzdaten ist an einen Fireboard-Portal-Account gekoppelt. Ein Fireboard-Portal-Account hat für diese API einen Authentifizierungsschlüssel (authkey) der jedem Aufruf mit gegeben werden muss.
Zusätzlich muss der Aufruf durch einen Aufrufschlüssel (call) identifiziert werden.
Folgende API-URL ergibt sich demzufolge:

https://login.fireboard.net/api?authkey={key}&call=operation_Data

Dem Aufruf wird ein XML Payload als POST mitgegeben.

Die Daten für einen Einsatz enthalten die wichtigsten einsatzrelevanten Angaben:
Einsatzstichwort
Alarmnachricht
Einsatzbeginn
Leitstellennummer
Einsatzort (plus geografische Koordinate im Dezimalgradformat) Lagebeschreibung

Zusätzlich muss jeder Einsatz eine eindeutige Einsatzidentifikationsnummer besitzen um nachträglich eingelieferte Daten diesem Einsatz zuordnen zu können.
Die Einsatzidentifikationsnummer muss für jeden einzelnen Kunden eineindeutig sein (also nach authkey).

Datenstruktur

<?xml version="1.0" encoding="UTF-8"?> <fireboardOperation version="1.0">
<uniqueId>11A1411EAB213194334CED</uniqueId> <basicData>
<externalNumber>OF120137</externalNumber> <keyword>F2</keyword> <announcement>Wohnungsbrand</announcement> <location>Testphasen, Teststrasse 1</location> <geo_location>
<latitude></latitude>
<longitude></longitude>
</geo_location>
<timestampStarted>
<long>1458028846582</long>
</timestampStarted>
<situation>Notruf über Anwohner</situation> </basicData>
</fireboardOperation>

<uniqueId> ist als Pflichtfeld zu verstehen, alle anderen Angaben innerhalb von <basicData> sind optional.
Werden Felder frei gelassen, so befüllt das Fireboard-Portal die entsprechenden Felder mit plausiblen Daten zur späteren Anzeige im Portal.
Wenn <timestampStarted> nicht befüllt wird, so übernimmt Fireboard zur Anzeige das Datum der Einlieferung der Daten.
Eine spätere Korrektur auf <timestampStarted> ist jedoch möglich.

-=ZGD=- 18. Aug 2016 10:53

AW: XLM Payload als Post
 
Wie gesagt, bei mir hat es bereits funktioniert.
Ich habe OK im Response erhalten.

strom 18. Aug 2016 11:03

AW: XLM Payload als Post
 
ok, hier nochmal zum prüfen!

Delphi-Quellcode:
function ExecuteAPI: string;
var
 http: TIdHttp;
 params: TStringList;
begin
 try
  http := TIdHTTP.Create(nil);
  params := TStringList.Create;
  params.Add('<?xml version="1.0" encoding="UTF-8"?>');
  params.Add('<fireboardOperation version="1.0">');
  params.Add('<uniqueId>123456789</uniqueId>');
  params.Add('<basicData>');
  params.Add('<externalNumber>OF120131</externalNumber>');
  params.Add('<keyword>F2</keyword>');
  params.Add('<announcement>Wohnungsbrand</announcement>');
  params.Add('<location>Test, Teststrasse 1</location>');
  params.Add('<geo_location>');
  params.Add('<latitude>123456</latitude>');
  params.Add('<longitude>654321</longitude>');
  params.Add('</geo_location>');
  params.Add('<timestampStarted>');
  params.Add('<long></long>');
  params.Add('</timestampStarted>');
  params.Add('<situation>Notruf</situation>');
  params.Add('</basicData>');
  params.Add('</fireboardOperation>');
  http.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  Form3.Memo8.Lines.Insert(0,http.Post('https://login.fireboard.net/api?authkey=TFqeZsuEOtrVp1YvWfe49w5f9dgB1yUI&call=operation_Data', params) +' '
   + FormatDateTime ('dd.mm.yyyy , hh:nn:ss', Now));
  params.saveToFile(ExtractFilePath(ParamStr(0)) +'xml/'+Form3.Edit2.Text +'.xml');
  Form1.Client_eGrid.Socket.SendText (Trim(Form3.Memo8.Lines[0])); //Problem Zeilenumbruch Memo8 !
 finally
  params.Free;
 end;
end;
Delphi-Quellcode:
procedure TForm3.BitBtn10Click(Sender: TObject);
begin
 ExecuteAPI;
  Memo3.Lines.Insert(0,'Fireboard --->'+ ' ' +FormatDateTime ('dd.mm.yyyy , hh:nn:ss', Now));
 end;

-=ZGD=- 18. Aug 2016 11:55

AW: XLM Payload als Post
 
Hello.

Also bei mir funktioniert es - zumindest sind das XML-File und der Request valid.

Der Fehler ist sicher XML error?

strom 18. Aug 2016 12:04

AW: XLM Payload als Post
 
Wieso klappt das bei Dir?

Habe zwei Einträge gesehen!

Was meinst Du mit?
Zitat:

Der Fehler ist sicher XML error?

strom 18. Aug 2016 12:04

AW: XLM Payload als Post
 
Das Du meinen Quelltext benutzt?

-=ZGD=- 18. Aug 2016 12:09

AW: XLM Payload als Post
 
Nein, ich hab im Büro keinen Zugriff auf Indy :D

Ich hab mir das XML mit deinem Quelltext als File gespeichert und so als Payload abgesetzt. Funktioniert.

Deine Rückmeldung vom Post ist welche?

Code:
error: xml error
?

strom 18. Aug 2016 12:11

AW: XLM Payload als Post
 
ok,

Code:

{"status":"error","errors":["xml error"]}

-=ZGD=- 18. Aug 2016 12:18

AW: XLM Payload als Post
 
Hm, wohlmöglich macht Indy ne Umwandlung der < = ! >, etc.

Führ mal eine Variable vom Typ
Delphi-Quellcode:
TStringStream
ein.

Delphi-Quellcode:
var
   request: TStringStream;
begin
  // Hier ein Code, mit dem du das XML aufbaust
  .....
  // Wenn du alles drin hast, erzeuge den TStringStream auf Basis der params
  request := TStringStream.Create(params.text);
  // Senden
  http.post(URL, request);
  ...
end;

strom 18. Aug 2016 12:34

AW: XLM Payload als Post
 
Hurra, Hurra, Hurra,

Danke es geht! Ich glaube es nicht :-):-D

mjustin 18. Aug 2016 13:11

AW: XLM Payload als Post
 
Zitat:

Zitat von strom (Beitrag 1345154)
Hurra, Hurra, Hurra,

Danke es geht! Ich glaube es nicht :-):-D

Siehe auch Beitrag #6

-=ZGD=- 18. Aug 2016 19:50

AW: XLM Payload als Post
 
Zitat:

Zitat von mjustin (Beitrag 1345161)
Zitat:

Zitat von strom (Beitrag 1345154)
Hurra, Hurra, Hurra,

Danke es geht! Ich glaube es nicht :-):-D

Siehe auch Beitrag #6

Absolut. Konnte ja keiner damit rechnen, dass er seinen Quelltext wieder ändert 😊


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.
Seite 2 von 2     12   

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