Html 将VB中的文件上载到Web服务

Html 将VB中的文件上载到Web服务,html,vb.net,web,Html,Vb.net,Web,好的,首先让我说访问web服务对我来说是一个全新的游戏,我对这方面几乎一无所知。 我需要编写一个小应用程序,让用户能够将文件上传到指定的web服务,但我真的不知道需要什么。我已经拼凑了一些代码(见下文),这些代码是我从各个地方采集的,它可以运行,但它没有上传文件。我怀疑我正在连接到web服务,因为我不再收到拒绝访问错误:) 任何关于获取上传文件的正确代码的帮助都将被告知 Private Sub Process_XML(ByVal strXML As String, ByVal strStatus

好的,首先让我说访问web服务对我来说是一个全新的游戏,我对这方面几乎一无所知。 我需要编写一个小应用程序,让用户能够将文件上传到指定的web服务,但我真的不知道需要什么。我已经拼凑了一些代码(见下文),这些代码是我从各个地方采集的,它可以运行,但它没有上传文件。我怀疑我正在连接到web服务,因为我不再收到拒绝访问错误:) 任何关于获取上传文件的正确代码的帮助都将被告知

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
Private子进程\u XML(ByVal strXML作为字符串,ByVal strStatus作为字符串)
将用户凭据设置为网络凭据
Dim strTestUrl作为字符串=”https://webservice.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/LodgeDRS.wsdl"
尝试
'确定,设置身份验证的凭据
UserCredentials=新的网络凭据(“FGS243_-WS”,“XXXXXXXXX”)
选择案例strStatus
案例“测试”
上载XML(stresturl、UserCredentials)
案例“生产”
结束选择
特例
错误消息(“处理XML”)
结束尝试
端接头
私有子上传XML(ByVal-UrName作为字符串,ByVal-creds作为网络凭据)
尝试
'从路径中获取文件名
Dim strFile作为字符串=System.IO.Path.GetFileName(strXMLFileName)
'获取所选文件的文件信息
将fInfo设置为新文件信息(strXMLFileName)
'获取文件的长度以查看是否可能
'以上载它(标准限制为4096 kb)
Dim numBytes As Long=fInfo.Length
Dim dLen As Double=Convert.ToDouble(fInfo.Length/1000000)
'查找文件大小是否超限
如果(dLen<5),则
'为文件设置文件流和二进制读取器
将fStream设置为新文件流(strXMLFileName、FileMode.Open、FileAccess.Read)
Dim br作为新的二进制读取器(fStream)
'将文件转换为字节数组
以字节()表示的Dim FileData=br.ReadBytes(转换为.ToInt32(numBytes))
br.Close()
将myHttpWebRequest设置为HttpWebRequest=CType(WebRequest.Create(uriName),HttpWebRequest)
myHttpWebRequest.ContentType=“text/xml”
myHttpWebRequest.Method=“POST”
myHttpWebRequest.Credentials=creds
myHttpWebRequest.PreAuthenticate=True
将myHttpWebResponse设置为HttpWebResponse=CType(myHttpWebRequest.GetResponse(),HttpWebResponse)
Dim receiveStream As Stream=myHttpWebResponse.GetResponseStream()
Dim编码为System.Text.Encoding=System.Text.Encoding.GetEncoding(“utf-8”)
Dim readStream作为新的StreamReader(接收流,编码)
Dim strResponse As String=readStream.ReadToEnd()
readStream.Dispose()
receiveStream.Dispose()
控制台写入(strResponse)
Console.ReadLine()
fStream.Close()
fStream.Dispose()
MsgBox(“完成”)
其他的
MsgBox(“所选文件“&strXMLFileName&”,超出了上载的大小限制”)
如果结束
特例
错误消息(“上传XML”)
结束尝试
端接头

您可能会混淆了您所看到的一些示例。遗嘱需要作为myHttpWebRequest的一部分,myHttpWebResponse.GetResponseStream()部分将更多用于下载文件我不怀疑我把事情弄混了。正如我所说,这对我来说都是全新的。谢谢你的指点。。。。