AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Maschinesteuern mit TNetHttpClient
Thema durchsuchen
Ansicht
Themen-Optionen

Maschinesteuern mit TNetHttpClient

Ein Thema von WunniKunz · begonnen am 28. Feb 2024 · letzter Beitrag vom 15. Apr 2024
 
WunniKunz

Registriert seit: 13. Feb 2024
8 Beiträge
 
#1

Maschinesteuern mit TNetHttpClient

  Alt 28. Feb 2024, 13:19
Problembeschreibung Delphi-HKA-Steuerung. 26.02.24
WK
Aufgabe: Ein Blockheizkraftwerk soll mittels eines Delphi-Programms gesteuert werden.
Erforderlich beim Zugriff ist eine Authentifizierung, bestehend aus Benutzername und Passwort.
Das Auslesen von Betriebswerten geschieht, in dem ein Anforderungsstring gesendet wird in der Form Http://IPAdresse:Port/getKey?k=Hka_Mw1.usDrehzahl&_rnd=9619; Ein Steuerbefehl muß mit „Post“ ausgeführt werden und hat die Form
Http://IPAdresse:Port/SetKeys mit den Daten: Stromf_Ew.Anforderung_GLT.bAktiv=1

Mit einer Htm-Seite können beide Befehle erfolgreich ausgeführt werden, wobei der Anforderungstring darin ist
<input type="text" name="Stromf_Ew.Anforderung_GLT.bAktiv" value="1"><br>

Lösungsversuch:
1. Sockets, scheiden nach meinem Kenntnisstand aus, da kein Authentifizierungs-Methode zur Verfügung steht.
2. mit NetHttpRequest und NetHttpClient.
2.1 Datenabfrage funktioniert.
2.2 Senden eines Steuerbefehls funktioniert bisher nicht.
Das Sendeteil hat entsprechend DocWicki die Form:

function Post(const AURL: string; const ASource: TStrings; const AResponseContent: TStream = nil; const AEncoding: TEncoding = nil; const AHeaders: TNetHeaders = nil): IHTTPResponse; overload; Dies habe ich programmiert und dabei als ersten Versuch nur AURL und ASource verwendet, mit ASource: SetKeys&Stromf_Ew.Anforderung_GLT.bAktiv=1
Die Verwendung von „Overload“ am Ende der Funktion führt zu einem Compilerfehler.
Dies erzeugt keinen Compilerfehler und keinen Laufzeitfehler, aber ein TimeOut, der Server antwortet nicht.
Läßt man da „=1“ am Ende des Befehls weg Antwortet der Server mit „OK“ führt den Befehl aber nicht aus.
Im zweiten Versuch habe ich zusätzlich AHeaders verwendet, da damit der BefehlsString und der Wert „ =1 “ getrennt werden kann.
Dies ergibt keinen Compilerfehler, aber eine Zugriffsverletzung

Den verwendeten Code gebe ich hier wieder. Man kann entweder nur Stringliste oder zusätzlich AHeaders verwenden.

Kann mir eventuell jemand weiterhelfen? Geht dies überhaupt mit NetHttp…?

Delphi-Quellcode:
//StromAnfStr1 = 'Stromf_Ew.Anforderung_GLT.bAktiv';

(*** Daten holen, bearbeiten und anzeigen *************************************)
procedure THKA02Form.AnfSenden(Sender: TObject);
VAR Antwort : IHTTPResponse;
    URL : String;
    AHeaders1: TNetHeaders;
    ValuePair : TNAmeValuePair;
    AnfString : TStringList;
begin
  if HKAStromAnf then begin
(*
      URL := 'Http://'+URLHKA+':'+PortHKA+'/Setkeys';
      AnfString := TStringList.Create;
      AnfString.Add('/'+StromAnfStr1);
      AnfString.Add('=1');
      try
        Antwort := NetHttpRequest1.post(URL,AnfString);
        Antwort := Antwort;
*)

      URL := 'Http://'+URLHKA+':'+PortHKA;
      ValuePair := TNameValuePair.Create(StromAnfStr1,'1');
      AHeaders1 := TNetHeaders.Create(ValuePair);
      AHeaders1 := AHeaders1;
      AnfString := TStringList.Create;
      AnfString.Add('/SetKeys'); //&'+StromAnfStr1
      try
         Antwort := NetHttpRequest1.post(URL,AnfString,@AHeaders1);
// Antwort := NetHttpRequest1.post(URL,AnfString);
          Antwort := Antwort;
(**)
      finally
         AnfString.Free;
      end;
  end else begin
    SendeStr := 'Http://'+ URLHKA + ':' + PortHKA + '/' + AnforderungStr;
    NetHTTPRequest1.GET(SendeStr);
  end;
end;
[EDIT SAGT]
Demo Urls "entschärft", Code-Tags gesetzt
MfG Christian Seehase
[/EDIT SAGT]

Geändert von TBx (28. Feb 2024 um 18:23 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 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