Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi Leute,

hab mal wieder eine Frage.

Ich möchte via https eine XML-Datei und ein Zip-Archiv versenden.

hat jemand von euch vielleicht einen Tip, wie sich das umsetzen lässt?

Die bisherigen Beispiele die ich gefunden habe, waren recht wenig hilfreich.

Hoffe, ihr könnt mir auch diesmal helfen.

Beste Grüße

noob

Geschrieben

Hi Leute,

hab mittlererweile eine Lösung für das Problem gefunden. Habe damit aber immernoch ein paar Probleme, vielleicht kann mir ja jemand sagen, woran es liegen könnte.

Der Code sieht folgendermaßen aus:

Public Function UploadFile(ByVal filePath As String, _

                                   ByVal address As String, _

                                   ByRef pb As System.Windows.Forms.ToolStripProgressBar) _

                                   As Boolean


        'Get the length of the selected file

        Dim fi As IO.FileInfo = My.Computer.FileSystem.GetFileInfo(filePath)

        Dim fileLength = fi.Length


        'Create the request

        Dim request As HttpWebRequest = _

            DirectCast(HttpWebRequest.Create(address), HttpWebRequest)


        'Configure request

        request.Credentials = New System.Net.NetworkCredential("BENUTZER", "PWD")

        request.Method = "POST" 'WebRequestMethods.Http.Post



        request.ContentLength = fileLength.ToString()

        'request.UserAgent = "http 1.1"

        ' request.ContentType = "http 1.1"


        'This is required for our WebDav server (will error without it)

        'request.SendChunked = True

        'request.Headers.Add("Translate: f")

        'request.AllowWriteStreamBuffering = True


        Dim s As IO.Stream = request.GetRequestStream()

        Dim fs As New IO.FileStream(filePath, IO.FileMode.Open, IO.FileAccess.Read)


        'Größe des Files in KB

        pb.Maximum = CInt(fileLength \ 1024)

        pb.Minimum = 0

        pb.Value = 0

        pb.Visible = True


        Dim bytes(1023) As Byte              '1024 bytes

        Dim bytesRead As Integer = 0

        Dim totalBytesRead As Long = 0


        Do

            bytesRead = fs.Read(bytes, 0, bytes.Length)


            If bytesRead > 0 Then


                totalBytesRead += bytesRead


                'Write to stream

                s.Write(bytes, 0, bytesRead)


                'Update progress

                pb.Value = CInt(totalBytesRead \ 1024)


            End If


        Loop While bytesRead > 0


        s.Close()

        s.Dispose()

        s = Nothing


        fs.Close()

        fs.Dispose()

        fs = Nothing



        Try


            Dim response As HttpWebResponse = _

                DirectCast(request.GetResponse(), HttpWebResponse)


            MsgBox(response.ProtocolVersion)

            'Check the ContentLength of the Response

            Dim code As HttpStatusCode = response.StatusCode


            response.Close()

            response = Nothing


            pb.Visible = False


            'Return Success

            Return (code = HttpStatusCode.OK)

        Catch ex As WebException

            'MsgBox(ex.Response.ResponseUri.AbsoluteUri)

            MsgBox(ex.Message)

        Catch e As Exception

            MsgBox(e.Message)

        End Try


    End Function

Möchte ich nun die Datei versenden, bekomme ich immer den Fehler: "Der Remoteserver hat einen Fehler zurückgegeben: (405) Unzulässige Methode".

Hat jemand eine Ahnung, ob das Problem im Code steckt oder in der Administration des WebServers? Ich habe zwar die Vermutung, dass es am Server liegt, habe aber keinen Einfluss auf dessen Administration.

Wäre super, wenn mir jemand dabei weiterhelfen könnte.

Beste Grüße

noob

Geschrieben

sende doch mal testweise ein HTTP POST an den server (z.b. mittels firefox), dann siehst du ja, ob der server die methode unterstützt. wenn nicht, wird das eben administrativ deaktiviert sein oder der server kann nur HTTP GET.

s'Amstel

Geschrieben

Hi Amstelchen,

vielen Dank für deine Antwort.

Kannst du mir bitte sagen, wie ich einen Post request via Browser ausführen muss? Steh grad irgendwie auf dem Schlauch.

Habe mir auch schon gedacht, dass es vielleicht an der falschen Methode liegen könnte. Mit Get hat es aber auch nicht funktioniert. Hier erscheint dann anstatt der Fehlermeldung "405 Unzulässige Methode" der Fehler "Inhaltsteil mit dem Verbtyp kann nicht gesendet werden". Mit dieser Fehlermeldung kann ich aber leider genauso wenig anfangen. Weißt du zufällig, was damit gemeint sein könnte?

Gruß

noob

Geschrieben

Hi Ted,

hab mir die Beiträge durchgelesen. Habe die Lösung aber immernoch nicht gefunden. Wenn ich das gezeigte Beispiel verwende (Methode Get), kommt zwar kein Fehler mehr, aber es wird trotzdem kein File geuploadet.

Bin mittlererweile wirklich ratlos. :(

Hat niemand ein gutes Beispiel oder Tutorial für mich?

Beste Grüße

noob

Geschrieben

Hi Amstelchen,

danke, das hat für Klarheit gesorgt und auch gleich wieder Fragen aufgeworfen. Diesmal liegt es aber eher an meiner mangelden Kenntnis von telnet. Ich habe den Aufruf auf den Server und den dazugehörigen Ordner gestartet (Server/Ordner). War dies falsch oder richtig? Kenne mich mit telnet leider gar nicht aus.

Beste Grüße

noob

Geschrieben

Hi Amstelchen,

habe herausgefunden wie es mit telnet geht. Dabei habe ich festgestellt, dass Port 23 des Servers zu ist. Kann das die Lösung sein? Oder ist das nur der telnet-Port und nicht die Lösung meines Problems?

Kann es durch Einstellungen am Server leider nicht herausfinden, da ich keine Rechte auf dem Server besitze.

Gruß

noob

Geschrieben

Hi Leute,

habe jetzt nun noch ein wenig recherchiert und dabei habe ich auf der msdn Seite ein Anleitung gefunden, nach der ich folgenden Code erstellt habe:

Private Sub ExchangeXMLByHttps()

        Try

            Dim Path As String

            Dim Adress As String

            Dim FileName As String


            Path = "C:\bin\Debug\testfiles\"

            FileName = "20090713-125202-RueckmeldungKontakt.xml"

            Adress = "https://Server/Upload/"

            Dim myWebClient As New WebClient



            myWebClient.Credentials = CredentialCache.DefaultCredentials

            Dim responseArray As Byte() = myWebClient.UploadFile(Adress, "POST", Path & FileName)

            MsgBox(responseArray.Length)


        Catch webex As WebException

            MsgBox(webex.Message)

            MsgBox(webex.Response)

        Catch ex As Exception

            MsgBox(ex.Message)

        End Try


        'Dim content() As Byte

        'content = ReadFile(Path & FileName)

        'MsgBox(content)

        'UploadFile(Adress, "", FileName, content)


    End Sub

Nun habe ich jedoch immernoch die selben Probleme. Bei der Methode POST kommt Fehler 405 Unzulässige Methode und bei Get kommt ebenfalls eine Fehlermeldung.

Nun habe ich in einem anderen Forum gelesen, dass man zum Dateiupload auf dem Server ein entsprechendes CGI Programm braucht, dass die Datei entgegennimmt. Stimmt das?

Wenn ja, kann mich mal jemand aufklären, wie das Ganze zusammenhängt?

Wenn es daran nicht liegt, kann es sein, dass ich für den Upload die falschen Methoden für https verwende?

Beste Grüße

noob

P.S. Würde mich auch sehr über Beispielcode freuen

Geschrieben
habe herausgefunden wie es mit telnet geht. Dabei habe ich festgestellt, dass Port 23 des Servers zu ist. Kann das die Lösung sein? Oder ist das nur der telnet-Port und nicht die Lösung meines Problems?

du musst auf port 80 (HTTP), nicht auf den telnet-port 23.

s'Amstel

Geschrieben

Hi Leute,

habs hinbekommen!!!:)

Der Fehler lag sowohl beim Server als auch daran, wie ich den Code verwendet habe.

Bei der Angabe der URI ist unbedingt darauf zu achten, dass das File, das geuploaet werden soll, bereits mit angegeben wird, auch wenn das auf den ersten Blick nicht logisch erscheint, da es sich ja noch nicht auf dem Server befindet.

Der Grund hierfür ist der, dass die Methode aber eine Ressource beim WebServer benötigt, auf die sie sich beziehen kann und das geht nur so.

Beste Grüße und nochmal vielen Dank euch allen für die Hilfe.

noobvb

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...