URL Browser vs Wago

Begonnen von sia, 14. Januar 2019, 10:35:39

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 3 Gäste betrachten dieses Thema.

sia

Hallo,

ich verwende die Oscat Network Bibliothek (1.2.1.1). Muss einen URL Path an einen Alarmserver schreiben. Die Struktur sieht wir folgt aus:

http://192.168.10.50/command?command=genericEvent&value=test&serverid=17939837266442180544&deviceid=24

Sobald ich es vom Browser schreibe, bekomme ich eine OK-Meldung (siehe Anhang_1).

Nun habe ich ein Programm, anhand vom Oscat Beispielprogramm HTTP_GET, erstellt (siehe Anhang_2).
Leider funktioniert es nicht. Was ich gemerkt habe, ist QUERY viel zu kurz (siehe Anhang_3). Es wurde nicht gesamter URL Code geschrieben. Wie kann ich die QUERY Länge so anpassen, dass der gesamte Code geschrieben wird? Oder mache ich noch etwas falsch?

Besten Dank,
Gruss,
Adrian

[gelöscht durch Administrator]

peewit

der baustein string_to_url und die datenstruktur sind nur für eine gewisse maximale länge ausgelegt

weiters ist die frage was bei global "string_length" vorgegeben sind
So wie es aussiht wird der string auf 80 Zeichen begrenzt

Achtung: es kann auch sein das du online nur 80 zeichen angezeigt bekommst


es sollte reichen wenn du beides anpasst

Die Struktur URL speichert die einzelnen Bestandteile einer URL.

URL:
Datenfeld          Datentyp            Beschreibung
PROTOCOL        STRING(10)        Protokoll
USER                STRING(32)        User Name
PASSWORD       STRING(32)        Passwort
DOMAIN           STRING(80)         Domain
PORT WORD Port Nummer
PATH STRING(80) Pfadangabe
QUERY STRING(120) Query
ANCHOR STRING(40) Anker
HEADER STRING(160) Header

sia

#2
Hallo peewit,

Vielen Dank für die schnelle Antwort.
Ich habe eine andere Lösung gefunden und zwar habe die Eingangsvariable url_text als STRING (255) angepasst. Nun kann ich den URL Code schicken.

Problem habe ich aktuell mit der Autorisierung. Sobald ich die Variable ENABLE auf true setze, bekomme ich als http_status "401 Unauthorized" (siehe Anhang_5). Im Funktionsblock URL_DATA stimmen das Passwort und der Benutzername (siehe Anhang_6). Wenn ich den Code über Browser schreibe, muss ich den Benutzername und das Passwort auch eingeben- natürlich gebe ich die gleichen wie im Ecockpit ein.

Ich habe auch schon mit dem Mode 2 & 3 probiert. Ich bekomme dann den gleichen Fehler 401. Beim Mode 0 & 1 erscheint der Fehler 505- Http Version nicht unterstützt- das ist klar für mich. Der Alarmserver unterstützt nur die Version 1.1.

Hast du eine Idee, was ich mit der Autorisierung im Ecockpit falsch mache?

EDIT: ich habe noch im Wireshark die Befehle ausgewertet.
- vom Browser geschiebenen Code bekommt der Server den Benutzername und das Passwort (siehe Anhang_8_Browser_Kommunikation). Wenn der Code von der SPS geschrieben wird, kommt an Server kein Benutzername und Passwort (siehe Anhang_7_SPS_Kommunikation).

Wieso ist das so? Habe ich vergessen, etwas im SPS-Programm zu aktivieren oder so?

Danke,
Gruss,
Adrian

[gelöscht durch Administrator]

peewit

es wäre hilfreich wenn du eine wireshark aufzeichnung vom browser-url auruf und von der sps machen könntest
dann kann ich sehen was die unterschiede sind und was die problemursache ist

sia

Hallo peewit,

das Programm funktioniert schon richtig. Die Authentifizierung war in der Bibliothek 121 nicht implementiert. Ich habe die Version 135 heruntergeladen und jetzt ist ok (Anhang_9).
Ich habe noch ein kleines Problem- Sobald ich einen URL-Befehl schicke, kann ich nächsten nicht mehr senden. Es geht nur, wenn ich das Programm zurücksetze oder auch wenn ich die Variable UNLOCK_BUF auf TRUE setze, aber dann wird der Befehl so lang geschickt, bis man die Variable auf FALSE setzt. Ich habe es schon mit Mode 2 & 3 ausprobiert. Soll das Programm so funktionieren? Wie könnte ich nächsten Befehl schicken ohne das Programm zu reseten?

[gelöscht durch Administrator]

peewit

nein das soll natürlich nicht so funktionieren bzw sich so nicht verhalten

die frage ist nun was dies auslöst

interessant wäre dein programm um hier fehler/problem erkennen zu können
und eventuell ein wireshark mitschnitt des datenverkehrs

was für eine sps hast du den überhaupt
eventuell gibt es hier inkompatibilitäten

benutzt du den baustein auch richtig ?

du forderst mit dem baustein daten an
diese werden die dann im buffer zur weiterverarbeitung übergeben
wenn du dann die daten verarbeitet hast dann "musst" du das den bausatein mittels "unlock_buf" mitteilen

muss leider zugeben das ich in der baustein-doku dies nicht mal ausführlich beschrieben habe