Aktuelle Zeit: 19.10.2018 04:03

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: PB.Ex Network (Windows)
BeitragVerfasst: 03.03.2018 22:50 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
Hallo,

vor einiger Zeit habe ich eine PowerShell-Lösung in diesem Thread gepostet, um mit Deepl.com Texte übersetzen zu lassen.
Mit den von PB bereitgestellten Netzwerkfunktionen ist das leider nicht möglich, Daten per POST an eine HTTPS-Website zu senden.
Deshalb habe ich für euch eine DLL-Bibliothek entwickelt, damit man sowas auch in PB machen kann. Außerdem kann man auch jedes Formular per POST ausfüllen und ausführen.

Funktionen:
  • SendNetworkFormFields()
    • Syntax:
      Code:
      Result = SendNetworkFormFields(URL$, Array, ArraySize, @Output$, @ErrorOutput)

    • Beschreibung: Sendet per POST ein Array mit den angegebenen Feldern an ein Formular einer Website.
    • Parameter:
      1. URL$: Die Zieladresse der Website, wohin die Daten gesendet werden sollen.
      2. Array: Ein String-Array mit den einzelnen Feldern wird an die Website gesendet. Feldname und Feldwert müssen separat gespeichert werden.
      3. ArraySize: Anzahl der Elemente.
      4. @Output$: Der Rückgabewert von der Website wird in die String-Variable gespeichert.
      5. @ErrorOutput: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
    • Beispielcode:
      Code:
      EnableExplicit

      Define PBEx_Network

      CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
        PBEx_Network = OpenLibrary(#PB_Any, "PB.Ex_Network_x86.dll")
      CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64
        PBEx_Network = OpenLibrary(#PB_Any, "PB.Ex_Network_x64.dll")
      CompilerEndIf

      If PBEx_Network
        Prototype SendNetworkFormFields(URL.p-Unicode, Array, ArraySize, Output, ErrorOutput)
        Define SendNetworkFormFields.SendNetworkFormFields = GetFunction(PBEx_Network, "SendNetworkFormFields")
        Prototype SendNetworkJSON(URL.p-Unicode, JSON.p-Unicode, Output, ErrorOutput)
        Define SendNetworkJSON.SendNetworkJSON = GetFunction(PBEx_Network, "SendNetworkJSON")
       
        Define Output$ = Space(100000)
        Define ErrorOutput$ = Space(1024)
        Define StartPosition
        Define EndPosition
        Dim MyArray.s(3)
       
        MyArray(0) = "firstname"
        MyArray(1) = "Pure"
        MyArray(2) = "lastname"
        MyArray(3) = "Basic"
       
        SendNetworkFormFields("https://www.w3schools.com/action_page.php", MyArray(), ArraySize(MyArray())+1, @Output$, @ErrorOutput$)
        StartPosition = FindString(Output$, "<h2>")
        EndPosition = FindString(Output$, "</div>")
        Debug Mid(Output$, StartPosition, EndPosition-StartPosition)
       
        CloseLibrary(PBEx_Network)
      EndIf

  • SendNetworkJSON()
    • Syntax:
      Code:
      Result = SendNetworkJSON(URL$, JSON$, @Output$, @ErrorOutput)

    • Beschreibung: Sendet per POST einen JSON-String an eine Website.
    • Parameter:
      1. URL$: Die Zieladresse der Website, wohin die Daten gesendet werden sollen.
      2. JSON$: Ein String im JSON-Format wird an die Website gesendet.
      3. @Output$: Der Rückgabewert von der Website wird in die String-Variable gespeichert.
      4. @ErrorOutput: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
    • Beispielcode:
      Code:
      EnableExplicit

      Define PBEx_Network

      CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
        PBEx_Network = OpenLibrary(#PB_Any, "PB.Ex_Network_x86.dll")
      CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64
        PBEx_Network = OpenLibrary(#PB_Any, "PB.Ex_Network_x64.dll")
      CompilerEndIf

      If PBEx_Network
        Prototype SendNetworkFormFields(URL.p-Unicode, Array, ArraySize, Output, ErrorOutput)
        Define SendNetworkFormFields.SendNetworkFormFields = GetFunction(PBEx_Network, "SendNetworkFormFields")
        Prototype SendNetworkJSON(URL.p-Unicode, JSON.p-Unicode, Output, ErrorOutput)
        Define SendNetworkJSON.SendNetworkJSON = GetFunction(PBEx_Network, "SendNetworkJSON")
       
        Define Output$ = Space(1024)
        Define ErrorOutput$ = Space(1024)
        Define JSON$
        Define CurrentJSON
        Define Sentence$ = "Hallo Welt"
        Define FromLang$ = "DE"
        Define ToLang$ = "EN"
       
        JSON$ + ~"{"
        JSON$ + ~"   \"jsonrpc\":\"2.0\","
        JSON$ + ~"   \"method\":\"LMT_handle_jobs\","
        JSON$ + ~"   \"params\":{"
        JSON$ + ~"      \"jobs\":["
        JSON$ + ~"         {"
        JSON$ + ~"            \"kind\":\"Default\","
        JSON$ + ~"            \"raw_en_sentence\":\"" + Sentence$ + ~"\""
        JSON$ + ~"         }"
        JSON$ + ~"      ],"
        JSON$ + ~"      \"lang\":{"
        JSON$ + ~"         \"user_preferred_langs\":["
        JSON$ + ~"            \"EN\","
        JSON$ + ~"            \"PL\","
        JSON$ + ~"            \"NL\""
        JSON$ + ~"         ],"
        JSON$ + ~"         \"source_lang_user_selected\":\"" + FromLang$ + ~"\","
        JSON$ + ~"         \"target_lang\":\"" + ToLang$ + ~"\""
        JSON$ + ~"      },"
        JSON$ + ~"      \"priority\":-1"
        JSON$ + ~"   },"
        JSON$ + ~"   \"id\":15"
        JSON$ + ~"}"
       
        SendNetworkJSON("https://www.deepl.com/jsonrpc", JSON$, @Output$, @ErrorOutput$)
        If ParseJSON(1, Output$)
          CurrentJSON = JSONValue(1)
          CurrentJSON = GetJSONMember(CurrentJSON, "result")
          CurrentJSON = GetJSONMember(CurrentJSON, "translations")
          CurrentJSON = GetJSONElement(CurrentJSON, 0)
          CurrentJSON = GetJSONMember(CurrentJSON, "beams")
          CurrentJSON = GetJSONElement(CurrentJSON, 0)
          CurrentJSON = GetJSONMember(CurrentJSON, "postprocessed_sentence")
          Debug GetJSONString(CurrentJSON)
         
        EndIf
       
        CloseLibrary(PBEx_Network)
      EndIf


Systemvoraussetzungen:
  • Windows XP oder höher
  • .NET Framework 4 oder höher
  • Unicode-Aktivierung (standardmäßig ab PB 5.50)
Da das benötigte .NET Framework ab Windows 7 standardmäßig vorinstalliert ist und auf XP und Vista installiert werden kann, sollte das kein Problem sein, diese Version zu verwenden.
Es ist keine Assembly-Registrierung mit regasm.exe mit Administratorrechten notwendig wie bei COMatePLUS.

Lizenz: Diese DLL-Datei ist kostenlos und darf ohne Namensnennung und ohne Link zur Homepage sowohl privat als auch kommerziell verwendet werden.

Download: http://www.rsbasic.de/downloads/downloa ... etwork.zip
Ich würde mich über Feedbacks, Verbesserungsvorschläge, Fehlermeldungen oder Wünsche sehr freuen. Danke :)

_________________
BildBildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB.Ex Network (Windows)
BeitragVerfasst: 03.03.2018 23:04 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
:allright: :bounce: :bounce:

Geil! Danke :)

_________________
Signatur und so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB.Ex Network (Windows)
BeitragVerfasst: 21.03.2018 12:00 
Offline

Registriert: 06.04.2005 22:44
Hallo RSBasic,

leider schmiert bei mir die DLL 32 & 64 Bit ab
Beispiel: Json

Folgende Compiler Einstellungen
Bild

Bekomme immer dieses Ergebnis
Bild

System:
Bild

Kannst du bitte helfen ?

Gruß Thomas


WIN10


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB.Ex Network (Windows)
BeitragVerfasst: 21.03.2018 12:34 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
Vielleicht liegt es daran, dass bei dir kein .NET 3.5 installiert ist. Ich hatte demnächst eh vor, alle Bibliotheken auf 4.0 upzudaten.
Ich werde das aber noch separat auf einer frischen Instanz testen.

_________________
BildBildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB.Ex Network (Windows)
BeitragVerfasst: 21.03.2018 12:50 
Offline

Registriert: 06.04.2005 22:44
RSBasic hat geschrieben:
Vielleicht liegt es daran, dass bei dir kein .NET 3.5 installiert ist. Ich hatte demnächst eh vor, alle Bibliotheken auf 4.0 upzudaten.
Ich werde das aber noch separat auf einer frischen Instanz testen.



Nein daran liegt es nicht.
Habe es aktiviert -- Rechner neu gestartet.. Immer noch das gleiche Ergebnis.

Leider....

Gruß Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB.Ex Network (Windows)
BeitragVerfasst: 21.03.2018 13:23 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Joshua314 hat geschrieben:
Bekomme immer dieses Ergebnis
Bild

... bekomme ich immer, wenn mein VirenScanner es zu gut mit mir meint. Vielleicht mal in die Richtung gucken?

Grüße ... Peter

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB.Ex Network (Windows)
BeitragVerfasst: 21.03.2018 14:00 
Offline

Registriert: 06.04.2005 22:44
Hallo Peter,

ist der von Winzigweich direkt (Fenster Defender) .... also nichts besonderes...
Den zum Test abgeschaltet .... trotzdem Sofort weg....

Gruß Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB.Ex Network (Windows)
BeitragVerfasst: 21.03.2018 15:41 
Offline

Registriert: 06.04.2005 22:44
Zwischen Frage:

In dem Beispiel kann man keine ID: mit eingeben ???
Wird diese nicht benötigt ???

Gruß Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB.Ex Network (Windows)
BeitragVerfasst: 21.03.2018 15:47 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
Nein, ID wird nicht benötigt, weil es keine anderen Funktionen gibt. Diese zwei Funktionen, die es in dieser Bibliothek gibt, sind eigenständige Funktionen.
Anders sieht es z.B. in PB.Ex SFTP-Lib aus, weil man da zuerst eine Verbindung mit OpenSFTP() herstellen muss, um danach beispielsweise eine Datei hochzuladen.

_________________
BildBildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB.Ex Network (Windows)
BeitragVerfasst: 21.03.2018 15:52 
Offline

Registriert: 06.04.2005 22:44
RSBasic hat geschrieben:
Nein, ID wird nicht benötigt, weil es keine anderen Funktionen gibt. Diese zwei Funktionen, die es in dieser Bibliothek gibt, sind eigenständige Funktionen.
Anders sieht es z.B. in PB.Ex SFTP-Lib aus, weil man da zuerst eine Verbindung mit OpenSFTP() herstellen muss, um danach beispielsweise eine Datei hochzuladen.


Ich meinte die deepl ID ,nicht dass wir von verschiedenen sprechen.... (Sollte es gleich genauer schreiben)

Gruß Thomas


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye