Загрузка файла в VB в веб-сервис - PullRequest
0 голосов
/ 27 февраля 2020

Хорошо, во-первых, позвольте мне сказать, что доступ к веб-сервисам - это совершенно новая игра для меня, я почти ничего не знаю об этой стороне вещей. Мне нужно написать небольшое приложение, чтобы пользователь мог загрузить файл в назначенный веб-сервис, и у меня нет ни малейшего представления о том, что требуется. Я собрал воедино некоторый код (см. Ниже), который я взял из разных мест, он запускается, но не загружает файл. Я подозреваю, что я подключаюсь к веб-службе, поскольку я больше не получаю ошибки «Отказано в доступе» :) Любая помощь в получении правильного кода для загрузки файла будет оценена.

Private Sub Process_XML(ByVal strXML As String, ByVal strStatus As String)
    Dim UserCredentials As NetworkCredential
    Dim strTestUrl As String = "https://webservice.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/LodgeDRS.wsdl"

    Try
      'ok, setup credentials for authentication
      UserCredentials = New NetworkCredential("FGS243_WS", "xxxxxxxxxx")

      Select Case strStatus
        Case "TEST"
          UploadXML(strTestUrl, UserCredentials)
        Case "PRODUCTION"
      End Select
    Catch ex As Exception
      Error_Message("Process_XML")
    End Try
  End Sub

  Private Sub UploadXML(ByVal uriName As String, ByVal creds As NetworkCredential)
    Try
      ' get the file name from the path
      Dim strFile As String = System.IO.Path.GetFileName(strXMLFileName)

      ' get the file information for the selected file
      Dim fInfo As New FileInfo(strXMLFileName)

      ' get the length of the file to see if it is possible
      ' to upload it (with the standard 4096 kb limit)
      Dim numBytes As Long = fInfo.Length
      Dim dLen As Double = Convert.ToDouble(fInfo.Length / 1000000)

      ' look for an overrun on file size
      If (dLen < 5) Then
        ' set up a filestream and binary reader for the file
        Dim fStream As New FileStream(strXMLFileName, FileMode.Open, FileAccess.Read)
        Dim br As New BinaryReader(fStream)

        ' convert the file to a byte array
        Dim FileData As Byte() = br.ReadBytes(Convert.ToInt32(numBytes))
        br.Close()

        Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(uriName), HttpWebRequest)
        myHttpWebRequest.ContentType = "text/xml"
        myHttpWebRequest.Method = "POST"
        myHttpWebRequest.Credentials = creds
        myHttpWebRequest.PreAuthenticate = True

        Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)

        Dim receiveStream As Stream = myHttpWebResponse.GetResponseStream()
        Dim encode As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
        Dim readStream As New StreamReader(receiveStream, encode)
        Dim strResponse As String = readStream.ReadToEnd()
        readStream.Dispose()
        receiveStream.Dispose()

        Console.Write(strResponse)
        Console.ReadLine()

        fStream.Close()
        fStream.Dispose()
        MsgBox("Done")
      Else
        MsgBox("The file selected, " & strXMLFileName & ", exceeds the size limit for uploads")
      End If
    Catch ex As Exception
      Error_Message("UploadXML")
    End Try
  End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...