FTP Download

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    FTP Download

    Hallo

    mit nachfolgendem Code - den ich, das sind meine ersten Schritte in VB.Net, also blutiger Anfänger - aus dem Internet zusammen kopiert habe :-((,
    versuche ich von einem FTP-Server in einer Zeitschleife Dateien herunterzuladen,
    das funktioniert auch prächtig - aber leider nur für den 1. Schleifen-Durchlauf
    danach löst mir meine request.Method = WebRequestMethods.Ftp.ListDirectory einen Fehler "Dieser Vorgang kann nicht ausgeführt werden, nachdem die Anforderung gesendet wurde" aus
    den ich nur durch Neustart der Applikation "beheben" kann

    Könnt ihr mir hier auf die Sprünge helfen?

    Spoiler anzeigen

    Brainfuck-Quellcode

    1. Region "Variablen"
    2. Const ftpUser As String = "XXXX"
    3. Const ftpPW As String = "XXXXXXXXXX"
    4. Const PATH_MESSAGE_OUT_LOCAL As String = "YYYYYY"
    5. Const PATH_MESSAGE_IN_LOCAL As String = "YYYYYY"
    6. Const PATH_MESSAGE_FROM_FTP As String = "ftp://ftp......." '<<<<
    7. Const PATH_MESSAGE_TO_FTP As String = "ftp://ftp........." '<<<<
    8. Dim vergangeneMinuten As Integer = 0
    9. Dim limitMinuten As Integer = 2
    10. Dim initalStart As Boolean = True
    11. Dim Dirlist As New List(Of String) 'I prefer List() instead of an array
    12. Dim request As FtpWebRequest = DirectCast(WebRequest.Create(PATH_MESSAGE_FROM_FTP), FtpWebRequest)
    13. Dim request1 As New WebClient()
    14. #End Region
    15. Sub CARGON_DOWNLOAD()
    16. Try
    17. request.Method = WebRequestMethods.Ftp.ListDirectory
    18. request.Credentials = New NetworkCredential(ftpUser, ftpPW)
    19. request1.Credentials = New NetworkCredential(ftpUser, ftpPW)
    20. Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
    21. Dim responseStream As Stream = response.GetResponseStream
    22. Using reader As New StreamReader(responseStream)
    23. Do While reader.Peek <> -1
    24. '// MessageBox.Show(reader.ReadLine())
    25. Dirlist.Add(reader.ReadLine)
    26. Dim strFileName = Replace(Dirlist.Item(0), "fmccs/", "").ToString
    27. '// Dim strPathFileName = (PATH_MESSAGE_FROM_FTP & "/" & strFileName)
    28. Dim strPathFileName = (PATH_MESSAGE_FROM_FTP & strFileName)
    29. Dim bytes() As Byte = request1.DownloadData(strPathFileName)
    30. Dirlist.Clear()
    31. Try
    32. '// Create a FileStream to read the file into
    33. Dim DownloadStream As FileStream = IO.File.Create(PATH_MESSAGE_IN_LOCAL & strFileName)
    34. DownloadStream.Write(bytes, 0, bytes.Length)
    35. DownloadStream.Close()
    36. Me.ListBox1.Items.Add("DOWNLOAD " & strFileName)
    37. Dim FTPDelReq As FtpWebRequest = WebRequest.Create(strPathFileName)
    38. FTPDelReq.Credentials = New Net.NetworkCredential(ftpUser, ftpPW)
    39. FTPDelReq.Method = WebRequestMethods.Ftp.DeleteFile
    40. Dim FTPDelResp As FtpWebResponse = FTPDelReq.GetResponse
    41. Application.DoEvents()
    42. Dim actContent As String = vbNullString
    43. ' Open file.txt with the Using statement.
    44. Using r As StreamReader = New StreamReader(PATH_MESSAGE_IN_LOCAL & strFileName)
    45. ' Store contents in this String.
    46. Dim line As String
    47. ' Read first line.
    48. line = r.ReadLine
    49. ' Loop over each line in file, While list is Not Nothing.
    50. Do While (Not line Is Nothing)
    51. actContent += line & vbNewLine
    52. 'Read in - >>> the next line.
    53. line = r.ReadLine
    54. Loop
    55. '// Call eMail(actContent, strFileName)
    56. '// Call eMailARGON(actContent, strFileName)
    57. End Using
    58. Catch ex As Exception
    59. 'MessageBox.Show(ex.Message)
    60. ' Exit Sub
    61. End Try
    62. Loop
    63. '// MessageBox.Show("SITA IN // Process Complete")
    64. End Using
    65. response.Close()
    66. Application.DoEvents()
    67. '// alle MSGs verschieben - davor sind sie gesperrt weil im Zugriff
    68. For Each foundFile As String In My.Computer.FileSystem.GetFiles(PATH_MESSAGE_IN_LOCAL, Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.msg")
    69. Try
    70. My.Computer.FileSystem.MoveFile(foundFile, PATH_MESSAGE_IN_LOCAL & "Received\" & My.Computer.FileSystem.GetName(foundFile))
    71. '// My.Computer.FileSystem.CopyFile(foundFile, PATH_MESSAGE_IN_LOCAL & foundFile)
    72. Catch ex As IOException
    73. '// MsgBox(foundFile)
    74. '// File bereits vorhanden
    75. My.Computer.FileSystem.DeleteFile(foundFile)
    76. End Try
    77. Next
    78. Catch ex As Exception
    79. Me.ListBox1.Items.Add("DOWNLOAD " & ex.Message)
    80. '// Exit Sub
    81. End Try
    82. End Sub


    Paul
    Jeder trägt sein eigenes Brett vorm Kopf

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Grundlosguetiger“ ()

    @Grundlosguetiger Willkommen im Forum. :thumbup:
    Formatiere mal bitte Deinen Code so, dass er auch als Code lesbar ist.
    Bearbeite Deinen Post, markiere den Code und drück auf den VB.NET-Button über dem Post-Edit-Feld.
    Da der Code etwas länger ist, markiere dann den Code mit den beiden Code-Tags und drück auf den Spoiler-Button (das durchgestrichene Auge).
    Über Erweiterte Antwort kannst Du Dir die Vorschau ansehen, ob der Post so aussieht, wie er aussehen soll.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!