Name des Programms:
HttpPostRequestLib
Beschreibung:
Mit dieser Library lassen sich Variablen und Dateien via POST an ein Script schicken.
Sie unterstützt deflate und gzip komprimierten Content. Zudem kann man einen Proxy angeben über den der Request geschickt wird.
Im Beispiel unten ist dargestellt wie man GET, POST und FILES an das angegebene Script schickt.
Die Funktionen GetLibVersion() und GetOSVersion() dienen dazu wenn man einen eigenen UserAgent String zusammen setzten möchte.
Changelog:
Version 2.1 - ProgressChanged Event hinzugefügt und die Methoden GetOSVersion() und GetLibVersion() als Shared deklariert.
Version 2.2 - Streams gefixed, so dass sie nun nicht mehr hängen sollte wenn 2 Requests hintereinander gesendet werden.
Version 2.3 - Proxy unterstürtzung eingefügt.
Version 2.4 - Über die SubmitEventArgs lässt sich nun der Sourcecode und die Uri auslesen, ebenso direkt von der Request Instanz.
Version 3.0 - Komplette umstrukturierung der Lib und hinzufügen neuer Funktionen womit sich nun auch ByteArrays hinzufügen lassen
Version 3.1 - Optimierung der Library, so dass nun Ressourcen über Disposing wieder freigegeben werden können.
Version 3.2 - Abbrechen des Uploadvorgangs
Version 4.0 - Überarbeitung und optimierung des Codes und runterschrauben des .NET-Frameworks auf 2.0
Version 4.1 - CookieCollection kann nun zwischen gespeichert und einem neuen Request wieder zugeordnet werden.
Screenshot:
- keiner -
Anwendungs Beispiel:
In diesem Beispiel gehe ich davon aus, das zuerst ein Login nötig ist um Daten hochzuladen, somit mache ich 2 Requests und speichere die Cookies.
Beispiel VB Projekt
Beispiel PHP Script für Login & MultiUpload:
post.php
Verwendete Programmiersprache:
Visual Basic 2008
Systemanforderungen:
.NET Framework 2.0
Download:
HttpPostRequestLib4.rar (18 KB / 53 KB)
Lizenz/Weitergabe:
Freeware
Einkompilieren ist nicht erlaubt. Eine Nennung ist nicht nötig.
ADMIN-EDIT: Einzig funktionierender Download hier: [Version 4.1] HttpPostRequestLib
HttpPostRequestLib
Beschreibung:
Mit dieser Library lassen sich Variablen und Dateien via POST an ein Script schicken.
Sie unterstützt deflate und gzip komprimierten Content. Zudem kann man einen Proxy angeben über den der Request geschickt wird.
Im Beispiel unten ist dargestellt wie man GET, POST und FILES an das angegebene Script schickt.
Die Funktionen GetLibVersion() und GetOSVersion() dienen dazu wenn man einen eigenen UserAgent String zusammen setzten möchte.
Changelog:
Version 2.1 - ProgressChanged Event hinzugefügt und die Methoden GetOSVersion() und GetLibVersion() als Shared deklariert.
Version 2.2 - Streams gefixed, so dass sie nun nicht mehr hängen sollte wenn 2 Requests hintereinander gesendet werden.
Version 2.3 - Proxy unterstürtzung eingefügt.
Version 2.4 - Über die SubmitEventArgs lässt sich nun der Sourcecode und die Uri auslesen, ebenso direkt von der Request Instanz.
Version 3.0 - Komplette umstrukturierung der Lib und hinzufügen neuer Funktionen womit sich nun auch ByteArrays hinzufügen lassen
Version 3.1 - Optimierung der Library, so dass nun Ressourcen über Disposing wieder freigegeben werden können.
Version 3.2 - Abbrechen des Uploadvorgangs
Version 4.0 - Überarbeitung und optimierung des Codes und runterschrauben des .NET-Frameworks auf 2.0
Version 4.1 - CookieCollection kann nun zwischen gespeichert und einem neuen Request wieder zugeordnet werden.
Screenshot:
- keiner -
Anwendungs Beispiel:
In diesem Beispiel gehe ich davon aus, das zuerst ein Login nötig ist um Daten hochzuladen, somit mache ich 2 Requests und speichere die Cookies.
VB.NET-Quellcode
- Imports HttpPostRequestLib.Net
- Public Class Form1
- Private WithEvents reg As HTTPPostRequest
- Private t1 As New Threading.Thread(AddressOf UploadFiles)
- Private Delegate Sub UpdateTextbox(ByVal Text As String)
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- t1.Start()
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- reg.CancelSubmit = True
- End Sub
- Private Sub UploadFiles()
- Dim Sourcecode As String = String.Empty
- Dim Cookies As System.Net.CookieCollection
- ' Thread zurücksetzten damit er neu gestartet werden kann
- t1 = New Threading.Thread(AddressOf UploadFiles)
- ' Request erstellen für den Login
- reg = New HTTPPostRequest("http://localhost/vb/post.php?mode=login")
- 'reg.Proxy = New Proxy("http://www.proxy.com", 1432, "test", "password")
- Try
- ' POST Variablen hinzufügen
- reg.Post.Add("username", "Dodo")
- reg.Post.Add("passwd", "123")
- ' Request abschicken
- Sourcecode = reg.Submit()
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
- ' Prüfen ob der Login erfolgreich war
- If Sourcecode.Contains("login ok") Then
- ' Cookies vom aktuellen Request zwischenspeichern
- Cookies = reg.Cookies
- ' neuen Request für den Upload erstellen
- reg = New HTTPPostRequest("http://localhost/vb/post.php?mode=upload")
- ' Cookies vom ersten Request zuweisen
- reg.Cookies = Cookies
- Try
- ' POST Variable hinzufügen
- reg.Post.Add("folder", "ordner")
- ' Dateien hinzufügen
- reg.Files.Add("file[]", "e:\bild.jpg")
- reg.Files.Add("file[]", "test.avi", System.IO.File.ReadAllBytes("e:\test.avi"), MimeTypes.Video.Avi)
- ' Request abschicken
- Sourcecode = reg.Submit()
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
- End If
- ' In einer Textbox die Ausgaben des Scriptes ausgeben
- Me.Invoke(New UpdateTextbox(Function(Text As String) TextBox1.Text = Text), Sourcecode)
- End Sub
- Private Sub reg_SubmitComplete(ByVal sender As Object, ByVal e As SubmitEventArgs) Handles reg.SubmitComplete
- TextBox1.Text = e.Sourcecode
- End Sub
- Private Sub reg_ProgressChanged(ByVal sender As Object, ByVal e As ProgressEventArgs) Handles reg.ProgressChanged
- If Not e.TotalByte = 0 Then
- Dim prozent As Integer = CInt((e.UploadedByte / e.TotalByte) * 100)
- ProgressBar1.Value = prozent
- Label1.Text = prozent.ToString()
- End If
- End Sub
- Private Sub reg_SubmitCancel(ByVal sender As Object, ByVal e As EventArgs) Handles reg.SubmitCancel
- ' Meldung ausgeben wenn der Request abgebrochen wurde
- MessageBox.Show("Cancel Upload")
- reg.Dispose()
- End Sub
- End Class
Beispiel PHP Script für Login & MultiUpload:
PHP-Quellcode
- <?php
- error_reporting(E_ALL);
- switch($_GET['mode']) {
- case "login":
- if($_POST['username'] == "Dodo" && $_POST['passwd'] == "123") {
- setcookie("login", "1", time() + 3600, "/");
- echo "login ok";
- } else {
- echo "login failed";
- }
- break;
- case "upload":
- if(count($_COOKIE) > 0) {
- if($_COOKIE['login'] == "1") {
- $folder = $_POST['folder'];
- if(!empty($folder) && !is_dir($folder)) mkdir($folder);
- if(count($_FILES) > 0) {
- if(is_array($_FILES['file']['tmp_name']) && count($_FILES['file']['tmp_name']) > 0) {
- foreach($_FILES['file']['tmp_name'] as $index => $dummy) {
- if(move_uploaded_file($_FILES['file']['tmp_name'][$index], $folder."/".$_FILES['file']['name'][$index])) {
- echo $_FILES['file']['name'][$index]." ok\r\n";
- } else {
- echo $_FILES['file']['name'][$index]. " failed\r\n";
- }
- }
- } else {
- if(move_uploaded_file($_FILES['file']['tmp_name'], $folder."/".$_FILES['file']['name'])) {
- echo $_FILES['file']['name']." ok\r\n";
- } else {
- echo $_FILES['file']['name']. " failed\r\n";
- }
- }
- } else {
- echo "no files to upload";
- }
- } else {
- echo "cookie exists but wrong value";
- }
- } else {
- echo "no cookies";
- }
- break;
- }
- ?>
Verwendete Programmiersprache:
Visual Basic 2008
Systemanforderungen:
.NET Framework 2.0
Download:
HttpPostRequestLib4.rar (18 KB / 53 KB)
Lizenz/Weitergabe:
Freeware
Einkompilieren ist nicht erlaubt. Eine Nennung ist nicht nötig.
ADMIN-EDIT: Einzig funktionierender Download hier: [Version 4.1] HttpPostRequestLib
Dieser Beitrag wurde bereits 24 mal editiert, zuletzt von „Marcus Gräfe“ ()