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