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: Alles auswählen
Result = SendNetworkFormFields(URL$, Array, ArraySize, @Output$, @ErrorOutput)
- Beschreibung: Sendet per POST ein Array mit den angegebenen Feldern an ein Formular einer Website.
- Parameter:
- URL$: Die Zieladresse der Website, wohin die Daten gesendet werden sollen.
- Array: Ein String-Array mit den einzelnen Feldern wird an die Website gesendet. Feldname und Feldwert müssen separat gespeichert werden.
- ArraySize: Anzahl der Elemente.
- @Output$: Der Rückgabewert von der Website wird in die String-Variable gespeichert.
- @ErrorOutput: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
- Rückgabewert:
- 1: Der Vorgang war erfolgreich.
- Beispielcode:
Code: Alles auswählen
EnableExplicit Global 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) Global SendNetworkFormFields.SendNetworkFormFields = GetFunction(PBEx_Network, "SendNetworkFormFields") Prototype SendNetworkJSON(URL.p-Unicode, JSON.p-Unicode, Output, ErrorOutput) Global 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
- Syntax:
- SendNetworkJSON()
- Syntax:
Code: Alles auswählen
Result = SendNetworkJSON(URL$, JSON$, @Output$, @ErrorOutput)
- Beschreibung: Sendet per POST einen JSON-String an eine Website.
- Parameter:
- URL$: Die Zieladresse der Website, wohin die Daten gesendet werden sollen.
- JSON$: Ein String im JSON-Format wird an die Website gesendet.
- @Output$: Der Rückgabewert von der Website wird in die String-Variable gespeichert.
- @ErrorOutput: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
- Rückgabewert:
- 1: Der Vorgang war erfolgreich.
- Beispielcode:
Code: Alles auswählen
EnableExplicit Global 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) Global SendNetworkFormFields.SendNetworkFormFields = GetFunction(PBEx_Network, "SendNetworkFormFields") Prototype SendNetworkJSON(URL.p-Unicode, JSON.p-Unicode, Output, ErrorOutput) Global 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
- Syntax:
- Windows XP oder höher
- .NET Framework 4 oder höher
- Unicode-Aktivierung (standardmäßig ab PB 5.50)
Es ist keine Assembly-Registrierung mit regasm.exe mit Administratorrechten notwendig wie bei COMatePLUS.
Lizenz: Diese DLL-Datei ist kostenlos und darf sowohl privat als auch kommerziell verwendet werden.
Folgende Copyright-Texte müssen mitgeliefert werden:
Download: http://www.rsbasic.de/downloads/downloa ... etwork.zipCopyright © 2019 RSBasic.de
Ich würde mich über Feedbacks, Verbesserungsvorschläge, Fehlermeldungen oder Wünsche sehr freuen. Wer mich unterstützen möchte, kann mir auch was kleines spenden. Danke