Delphi-PRAXiS
Seite 2 von 7     12 34     Letzte »    

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 11. Aug 2016 10:34

AW: XLM Payload als Post
 
Hier eine Anleitung zur Schnittstelle, habe es immer noch nicht! :shock:

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:

http://login.fireboard.net/api?authkey={key}&call=operationData

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=- 11. Aug 2016 10:42

AW: XLM Payload als Post
 
Was genau ist das Problem?

Das Handbuch ist falsch.
Es ist wie gesagt HTTPS!!!!! noch immer...wie schon oft erwähnt und durch HTTP-Code 301 bestätigt..

strom 11. Aug 2016 15:24

AW: XLM Payload als Post
 
hey,

komme mit dem Fehler Code E/A 105 nicht klar!
Habe es noch nicht verstanden :-(

-=ZGD=- 11. Aug 2016 15:29

AW: XLM Payload als Post
 
Du hast in deinem Quelltext
Delphi-Quellcode:
Writeln('iwas');
stehen.

Entferne diese oder kommentiere sie aus.

Das kommt daher, dass Delphi versucht diese Informationen auf die Konsole zu schreiben, du aber keine hast ;-)
Und wenn nichts da ist, knallt es eben.

strom 12. Aug 2016 08:13

AW: XLM Payload als Post
 
Hallo ZGD,

bekomme jetzt noch als Meldung: Wert für IOHandler ist ungültig?

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  HTTP: TIdHTTP;
  RequestBody: TStream;
  ResponseBody: string;
begin
  HTTP := TIdHTTP.Create;
  try
    try
      RequestBody := TStringStream.Create('{123456789}',
        TEncoding.UTF8);
      try
        HTTP.Request.Accept := 'input.xml HTTP/1.0';
        HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
        ResponseBody := HTTP.Post('https://login.fireboard.net/api?authkey={123456789}&call=operation_data',
          RequestBody);
        //WriteLn(ResponseBody);
       // WriteLn(HTTP.ResponseText);
      finally
        RequestBody.Free;
      end;
    except
      on E: EIdHTTPProtocolException do
      begin
        Showmessage(E.Message);
        Showmessage(E.ErrorMessage);
      end;
      on E: Exception do
      begin
        ShowMEssage(E.Message); // Fehlermeldung : Wert für IOHandler ist ungültig !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      end;
    end;
  finally
    HTTP.Free;
    Memo1.Lines.Insert(0, FormatDateTime('hh:nn:ss',Now));
  end;
  //ReadLn;
  //ReportMemoryLeaksOnShutdown := True;
end;

mjustin 12. Aug 2016 08:18

AW: XLM Payload als Post
 
Zitat:

Zitat von strom (Beitrag 1344739)
Hallo ZGD,

bekomme jetzt noch als Meldung: Wert für IOHandler ist ungültig?

Ältere Indy Versionen erfordern, dass ein OpenSSL IOHandler erzeugt und der TIdHTTP Komponenten zugewiesen werden muss.

Die aktuelle Indy Version erzeugt für HTTPS automatisch einen passenden IOHandler.

Lösung: entweder den passenden TIdIOHandlerOpenSSL erzeugen und der IOHandler Property zuweisen, oder Indy aktualisieren.

strom 12. Aug 2016 08:43

AW: XLM Payload als Post
 
Hallo,
würde mich für diese Lösung entscheiden:

Lösung: entweder den passenden TIdIOHandlerOpenSSL erzeugen und der IOHandler Property zuweisen,

Wie würde so eine Zuweisung aussehen?

strom 12. Aug 2016 09:18

AW: XLM Payload als Post
 
Hallo,

meinst Du das so? "HTTP.IOHandler.AllData(nl);"

+nl
+nl

und so weiter.......??

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  HTTP: TIdHTTP;
  RequestBody: TStream;
  ResponseBody,nl: string;
begin
  HTTP := TIdHTTP.Create;
  try
    try
      RequestBody := TStringStream.Create('{123456789}',TEncoding.UTF8);
      try
        HTTP.Request.Accept := 'input.xml HTTP/1.0';
        HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
        ResponseBody := HTTP.Post('https://login.fireboard.net/api?authkey={123456789}&call=operation_data',
          RequestBody);
        HTTP.IOHandler.AllData(nl); // in etwa so?
      finally
        RequestBody.Free;
      end;
    except
      on E: EIdHTTPProtocolException do
      begin
        Showmessage(E.Message);
        Showmessage(E.ErrorMessage);
      end;
      on E: Exception do
      begin
       Memo1.Lines.Insert(0,(E.Message)+' '+FormatDateTime('hh:nn:ss',Now));
      end;
    end;
  finally
    HTTP.Free;
    Memo1.Lines.Insert(0,'Zeitstempel '+ FormatDateTime('hh:nn:ss',Now));
  end;
end;

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

AW: XLM Payload als Post
 
Lösungen hier in der DP

Oder durch die Suche Hier im Forum suchenindy https

strom 12. Aug 2016 09:53

AW: XLM Payload als Post
 
Habe mir die Beispiele angesehen, mache ich doch!
Versehe ich nicht??

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  HTTP: TIdHTTP;
  RequestBody: TStream;
  ResponseBody: string;
begin
  HTTP := TIdHTTP.Create;
  try
    try
      RequestBody := TStringStream.Create('{123456789}',TEncoding.UTF8);
      try
        HTTP.Request.Accept := 'input.xml HTTP/1.0';
        HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
        ResponseBody := HTTP.Post('https://login.fireboard.net/api?authkey={123456789}&call=operation_data',RequestBody); // hier wird der Key doch übermittelt! 
      finally
        RequestBody.Free;
      end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 Uhr.
Seite 2 von 7     12 34     Letzte »    

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