AW: XLM Payload als Post
Hallo,
immer die gleiche Meldung :? was könnte ich noch ausprobieren? Zitat:
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; |
AW: XLM Payload als Post
Entferne bitte das = aus deinem Auth-Key am Ende. Und deinen Schlüssel hier im Forum bitte auch ;-)
|
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 |
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:
, durch die Validierung gejagt und gesehen, was falsch ist.
params.saveToFile('D:\test.xml');
Code:
Grundsätzlich gilt: Was aufgemacht wird, muss zumacht werden. Du hast
<?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>
Delphi-Quellcode:
geöffnet, aber nicht geschlossen (letzte Zeile).
<fireboardOperation version="1.0">
|
AW: XLM Payload als Post
hey,
nochmal zum Verständnis, habe ich doch gemach oder nicht? Zitat:
Zitat:
|
AW: XLM Payload als Post
Hey,
Zitat:
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 |
AW: XLM Payload als Post
Encoding.
Straße mit ß. Versuch es mal mit Doppel-S. |
AW: XLM Payload als Post
Guten Morgen ZGD,
leider immer noch die gleiche Meldung :cry: |
AW: XLM Payload als Post
Vergleiche mal einen funktionierenden Request mit einem nicht funktionierenden (z.B. mit http://www.telerik.com/fiddler).
|
AW: XLM Payload als Post
Zitat:
|
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:
|
AW: XLM Payload als Post
Poste deine komplette Unit ;-)
|
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! |
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. |
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! |
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 ;-)
|
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! |
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. |
AW: XLM Payload als Post
Wie gesagt, bei mir hat es bereits funktioniert.
Ich habe OK im Response erhalten. |
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; |
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? |
AW: XLM Payload als Post
Wieso klappt das bei Dir?
Habe zwei Einträge gesehen! Was meinst Du mit? Zitat:
|
AW: XLM Payload als Post
Das Du meinen Quelltext benutzt?
|
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
|
AW: XLM Payload als Post
ok,
Code:
{"status":"error","errors":["xml error"]} |
AW: XLM Payload als Post
Hm, wohlmöglich macht Indy ne Umwandlung der < = ! >, etc.
Führ mal eine Variable vom Typ
Delphi-Quellcode:
ein.
TStringStream
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; |
AW: XLM Payload als Post
Hurra, Hurra, Hurra,
Danke es geht! Ich glaube es nicht :-):-D |
AW: XLM Payload als Post
Zitat:
|
AW: XLM Payload als Post
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 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