Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Javascript ohne TWebBrowser ausführen (https://www.delphipraxis.net/156005-javascript-ohne-twebbrowser-ausfuehren.html)

wicht 16. Nov 2010 20:28

AW: Javascript ohne TWebBrowser ausführen
 
Das musst du mit einer x-beliebigen Socket/HTTP-Komponente an den Webserver schicken (die Indys werden oft empfohlen). Die aufzurufende URL müsste dann z.B. so aussehen:
Code:
http://192.168.1.2/vphone/vp-list-mailin.asp?mode=11&entry=3&nr=512&type=77&read=
, also ohne irgendwelche " oder '.

s.h.a.r.k 16. Nov 2010 22:43

AW: Javascript ohne TWebBrowser ausführen
 
Wichtig ist dabei auch, dass das Ergebnis abgefragt wird! Die HTTP Codes kann hier evtl. helfen. Denn am Schluss willst ein Fax löschen, dass es gar nicht mehr gibt.

BTW: gibts eigentlich keine API für diese Anlage?! Denn sobald der Hersteller der Anlage ein Update raus bringt, kann unter Umständen deine Software nicht mehr funktionieren. Mir ist schon klar, dass das mit einer API auch passieren kann, da ist aber das Risiko geringer.

Schwedenbitter 16. Nov 2010 23:06

AW: Javascript ohne TWebBrowser ausführen
 
Zitat:

Zitat von wicht (Beitrag 1062025)
Das musst du mit einer x-beliebigen Socket/HTTP-Komponente an den Webserver schicken (die Indys werden oft empfohlen).

Ich habe es jetzt mit dem Code von hier probiert - Leider ohne Erfolg. Welche Komponente/Unit von den Indys muss ich denn verwenden?

Sir Rufo 16. Nov 2010 23:22

AW: Javascript ohne TWebBrowser ausführen
 
Zitat:

Zitat von Schwedenbitter (Beitrag 1062078)
Zitat:

Zitat von wicht (Beitrag 1062025)
Das musst du mit einer x-beliebigen Socket/HTTP-Komponente an den Webserver schicken (die Indys werden oft empfohlen).

Ich habe es jetzt mit dem Code von hier probiert - Leider ohne Erfolg. Welche Komponente/Unit von den Indys muss ich denn verwenden?

Ach den ... Und welchen von den dreien?

s.h.a.r.k 16. Nov 2010 23:30

AW: Javascript ohne TWebBrowser ausführen
 
Wieso drei? Er referenziert doch genau einen -> Anker im Link! Den mittleren halt ;)

Schwedenbitter 16. Nov 2010 23:34

AW: Javascript ohne TWebBrowser ausführen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1062085)
Ach den ... Und welchen von den dreien?

Der erste funktioniert laut Fragesteller nicht und der letzte benutzt die Komponentensammlung 'synapse'. Also der 2. natürlich, zumal der Code von meinem Link auch genau auf diesen scrollen sollte. Das tut er jedenfalls in meinem Browser.

Die Frage zur API muss ich dann mal an den Telefon-Menschen weiterleiten. Im Dezember soll sowieso ein Update aufgespielt werden.

Folgender Code kommt zwar bis zur letzten Bedingung durch und liefert mit ein 'True' zurück. Das Fax bleibt aber beharrlich in der Anlage und nicht dort wo sie hinsollte - ins Nirvana:
Delphi-Quellcode:
Function DeleteItem(sURL, ItemEntry, ItemNr : String): Boolean;
Var
  S       : String;
  hSession : hInternet;
  hConnect : hInternet;
  hRequest : hInternet;
Begin
  Result:=False;
  hSession:=InternetOpenA('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG,
    nil, nil, 0);
  If (Assigned(hSession)) Then
  Begin
    hConnect:=InternetConnectA(hSession, PChar(sURL), INTERNET_DEFAULT_HTTP_PORT,
      nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
    If (Assigned(hConnect)) Then
    Begin
      hRequest:=HttpOpenRequestA(hConnect, 'POST', PChar(sURL),
        nil, nil, nil, INTERNET_SERVICE_HTTP, 0);
      If (Assigned(hRequest)) Then
      Begin
        S:='http://' + sURL + '/vphone/vp-list-mailin.asp?mode=11&entry=' +
          ItemEntry + '&nr=' + ItemNr + '&type="77"&read= ';
        Result:=HttpSendRequestA(hRequest, nil, 0, Pointer(S), Length(S));
        InternetCloseHandle(hRequest);
      End;
      InternetCloseHandle(hConnect);
    End;
    InternetCloseHandle(hSession);
  End;
End;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage(BoolToStr(DeleteItem('192.168.1.2', '0', '512'), True));
end;
Wo liegt mein Fehler?
Jetzt muss ich morgen vermutlich doch mal zum Siffer greifen und nachsehen, was exakt die Software an den Server in der Anlage sendet.

Gruß, Dank & Gute Nacht, Alex

Sir Rufo 16. Nov 2010 23:43

AW: Javascript ohne TWebBrowser ausführen
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1062086)
Wieso drei? Er referenziert doch genau einen -> Anker im Link! Den mittleren halt ;)

Genau den hätte ich nicht genommen.

Ich würde es mal mit synapse probieren. Da braucht auch nichts installiert werden und nach meinen Erfahrungen sehr sauber und extrem stabil.

Schwedenbitter 17. Nov 2010 08:45

AW: Javascript ohne TWebBrowser ausführen
 
OK. Dieses Thema hat mich auf folgende Idee gebracht:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  With TDownloadURL.Create(self) Do
  Try
    URL:='http://192.168.1.2/vphone/vp-list-mailin.asp?mode=11&entry=0&nr=512&type="77"&read=';
    FileName:='Dummy.html';
    Try
      ExecuteTarget(nil);
      ShowMessage('Executed OK');
    Except
      On E : Exception Do ShowMessage(E.Message);
    End;
  Finally
    Free;
  End;
end;
Zwar löscht er mir den Eintrag auch nicht. Aber ich bekomme eine html-Datei zurück, die mir mögliche Fehler verrät:
Code:
<html><body>
<h2><b>ASP Error</b></h2>
vp_list_mailin(mode,entry,rnr,type,read);
</body></html>
Wenn ich das richtig verstehe, ist mein 'POST' angekommen und der Server ist sogar noch so nett und sagt mir, wie ich die Funktion richter Weise benutzen soll. Da ich read= nirgends finden kann, bleibt mir also doch nur ein Shniffer. Oder sehe ich das falsch?

Ich möchte keine anderen Komponenten verwenden (Indys eingeschlossen), wenn und soweit die Chance besteht, dass ich es mit den Bordmitteln hinbekomme.

[EDIT]
Habe jetzt den Traffic mal mit Live HTTP Headers mitgeschnitten und es hat den Anschein, dass die Variablen vertauscht und die Argumente andere sind. Ich muss jetzt leider warten, bis wieder ein Fax eingeht und werde es dann probieren. Bins schon ganz euphorisch!
[/EDIT]

Gruß, Alex

Sir Rufo 17. Nov 2010 09:01

AW: Javascript ohne TWebBrowser ausführen
 
Zitat:

Zitat von Schwedenbitter (Beitrag 1062119)
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  With TDownloadURL.Create(self) Do
  Try
    URL:='http://192.168.1.2/vphone/vp-list-mailin.asp?mode=11&entry=0&nr=512&type="77"&read=';
    FileName:='Dummy.html';
    Try
      ExecuteTarget(nil);
      ShowMessage('Executed OK');
    Except
      On E : Exception Do ShowMessage(E.Message);
    End;
  Finally
    Free;
  End;
end;
Zwar löscht er mir den Eintrag auch nicht. Aber ich bekomme eine html-Datei zurück, die mir mögliche Fehler verrät:
Code:
<html><body>
<h2><b>ASP Error</b></h2>
vp_list_mailin(mode,entry,rnr,type,read);
</body></html>
Ich möchte keine anderen Komponenten verwenden (Indys eingeschlossen), wenn und soweit die Chance besteht, dass ich es mit den Bordmitteln hinbekomme.

Ist das ein Tippfehler in deinem Code?
statt
Code:
entry=0&nr=512&type
müsste es doch
Code:
entry=0&rnr=512&type
lauten

Schwedenbitter 17. Nov 2010 10:07

AW: Javascript ohne TWebBrowser ausführen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1062125)
Ist das ein Tippfehler in deinem Code?
statt
Code:
entry=0&nr=512&type
müsste es doch
Code:
entry=0&rnr=512&type
lauten

Ja - genau das. Und auch die Argumente sind anders als im html-Quelltext angegeben. Im Quelltext steht
Code:
type="77"
und
Code:
nr=512
(ohne das zusätzliche r), während es die Funktion umgekehrt und mit r will. Vielleicht eine Falle für Leute, die eine Software für die Anlagen schreiben wollen :lol: Wie auch immer.
Es funktioniert jetzt über die URL
Code:
http://192.168.1.2/vphone/vp-list-mailin.asp?mode=11&entry=0&rnr=77&type=512&read=
Danke für Eure Hilfe. Ich fasse mal zusammen:

1. Man kann ein 'POST' ziemlich einfach über TDownloadURL absetzen und damit eine Javascript-Funktion ausführen lassen.
2. Oben steht, wie es insbesondere bei einer OpenCom X320 geht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr.
Seite 2 von 3     12 3      

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