-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - peter.haider

#1
So, nun bekomme ich den Suchstring, wenn im HTML Body vorhanden, als Ausgabe.
Ein Vergleich der beiden außerhalb des Bausteins ermöglicht mir in Kombination mit "DONE" ein sicheres erkennen ob die SMS versendet wurde.

[/
DONE := TRUE;
IP_C.C_ENABLE := FALSE; (* Verbindung abbauen  *)

(* ------------------------------   Body Daten auf SMS Versand-Bestätigung durchsuchen   -----------------------------------------*)
                IF BODY_START > UINT#0 THEN
BUFFER_SEARCH_1(SIZE:=R_BUF.SIZE,STR:=SEARCH_BODY_STRING,POS:=UINT_TO_INT(BODY_START),IGN:=FALSE,PT:=R_BUF.BUFFER);
R_BUF.BUFFER:=BUFFER_SEARCH_1.PT;
search_string_startpos:=BUFFER_SEARCH_1.BUFFER_SEARCH;
ELSE
search_string_startpos:=-1;
END_IF;

IF search_string_startpos > -1 THEN
BUFFER_TO_STRING_NW_1(PT:=R_BUF.BUFFER,SIZE:=R_BUF.SIZE,START:=INT_TO_UINT(search_string_startpos),STOP:=INT_TO_UINT(search_string_startpos) + INT_TO_UINT(len(SEARCH_BODY_STRING)-1));
R_BUF.BUFFER:=BUFFER_TO_STRING_NW_1.PT;
BODY_STRING:=BUFFER_TO_STRING_NW_1.BUFFER_TO_STRING;
ELSE
BODY_STRING:='Keine Übereinstimmung';
END_IF;
(* -------------------------------------------------------------------------------------------------------------------------------*)code]


Anbei noch die Wireshark Datei mit negativer Antwort "SMS sending failed".

@ peewit: Besten Dank für deine Zeit!

PS: im HTTP_Get Baustein sind einige Warnungen in PCWorx gemeldet worden, da diverse Baustein Aufrufinstanzen mehrmals verwendet werden.(zb:_STRING_TO_BUFFER)
      Die habe ich bereinigt. Das sollte bei vielen OSCAT Bausteinen erledigt werden...


[gelöscht durch Administrator]
#2
So wie du es beschrieben hast funktionierte es nicht.
Ich habe aber einfach deinen Code wieder entfernt und del_end auf delimiter2b gesetzt:
(* HTTP HEADER Ende suchen -> durch $0D$A$0D$A erkennbar bei DEC RT-11,CP/M,MS-DOS,Windows *)
del_end := delimiter2b;


Jetzt bekomme ich ein Done vom Baustein.
Soll ich die Zuweisung auf "del_end" so belassen?

Und, wie du schon erkannt hast, bekomme ich eine Meldung in Form einer Webseite zum Status des SMS Versands.
Da ich eine Simkarte ohne Telefonie Guthaben zum testen verwendete, kam die Meldung" SMS sending failed"
Jetzt sollte ich das unabhängig vom Done noch zusätzlich überwachen.
Wie können wir den Inhalt der nachträglich gesendeten Webseite auf "failed" oder "successfully sent" überprüfen, bzw in eine Variable schreiben?

Besten Dank im Voraus

[gelöscht durch Administrator]
#3
Hat leider nicht geklappt mit Mode byte#3 und ip_control.timeout von 5s

[gelöscht durch Administrator]
#4
Hier die beiden Dateien, sind sowieso nur Testdaten...

[gelöscht durch Administrator]
#5
Nachdem der Switch mit Portspiegelung geliefert wurde siehe Anhänge.

172.20.10.11   = Phoenix SPS mit HTTP_Get Baustein
172.20.10.254 = Router
172.20.3.0       = PC mit funktionierender Firefox Anfrage(Browser Meldung "SMS send done")

Besten Dank,
Peter

[gelöscht durch Administrator]
#6
Also, die Athentifizierung funktioniert nun soweit(siehe unten)
Nur erkennt der Baustein kein "DONE", obwohl im R_BUF.BUFFER "1.1 200 OK" steht(Ausserhalb des Bausteins abgefragt).
Scheinbar ein Problem von BUFFER_SEARCH in Step 30.
Deaktiviere ich die User Authentication, der Fehler 401 tritt auf, dann ermittelt die Suche eine del_pos von 139!

Bitte um Hilfe



(* -------------------------------------------------------------------------*)
      text := CONCAT(text,URL_DATA.HEADER);
      _STRING_TO_BUFFER(STR:=text,POS:=idx,PT:=S_BUF.BUFFER,SIZE:=UINT#4096); (* HTTP Version in buffer kopieren *)
      S_BUF.BUFFER:=_STRING_TO_BUFFER.pt;
      idx := idx + LEN(text);
(* -------------------------------------------------------------------------*)
(* Authorization-Header in der Form Benutzername:Passwort Base64-codiert    *)
(* -------------------------------------------------------------------------*)
      user_pwd := CONCAT(URL_DATA.USER,':');
      user_pwd := CONCAT(user_pwd,URL_DATA.PASSWORD);
(* -------------------------------------------------------------------------*)
      BASE64_ENCODE_STR_1(RUN:=USER_PWD_ACTIVE,STR1:=user_pwd,STR2:=user_pwd_base64);
      user_pwd:=BASE64_ENCODE_STR_1.STR1;
      user_pwd_base64:=BASE64_ENCODE_STR_1.STR2;
(* -------------------------------------------------------------------------*)
(*               HTTP Authorization in buffer kopieren *)
(* -------------------------------------------------------------------------*)
      IF USER_PWD_ACTIVE THEN
         text:=CONCAT('Authorization: Basic ', user_pwd_base64);
         text := CONCAT(text,delimiter4b);
            _STRING_TO_BUFFER(STR:=text,POS:=idx,PT:=S_BUF.BUFFER,SIZE:=UINT#4096);    
            S_BUF.BUFFER:=_STRING_TO_BUFFER.pt;
         idx := idx + LEN(text);
      END_IF;
(* -------------------------------------------------------------------------*)
      text := CONCAT('Host: ',URL_DATA.DOMAIN);
      text := CONCAT(text,delimiter4b); (* workaround für pcworx -> kein $0D$0A als Stringkonstante möglich *)
      _STRING_TO_BUFFER(STR:=text,POS:=idx,PT:=S_BUF.BUFFER,SIZE:=UINT#4096); (* HTTP Host in buffer kopieren *)
      S_BUF.BUFFER:=_STRING_TO_BUFFER.pt;
      idx := idx + LEN(text);
(* -------------------------------------------------------------------------1,221*
#7
Guten Abend,
leider habe ich selbiges Problem mit dem Fehler 401 Unauthorized.

In der oscat_network_121 für PC-Worx ist die oben genannte Lösung nicht umgesetzt.
Auch die oscat_network_130 aus dem Forum beinhaltet keine Authentifizierung mittels User und Passwort.
Nach vergeblicher Mühe der Implementierung bitte ich um Hilfe bei der Integration in den HTTP_GET Baustein der oscat_network_121 oder um einen funktionierenden Baustein.

Besten Dank im Voraus,
Peter