Html 将VB中的文件上载到Web服务
好的,首先让我说访问web服务对我来说是一个全新的游戏,我对这方面几乎一无所知。 我需要编写一个小应用程序,让用户能够将文件上传到指定的web服务,但我真的不知道需要什么。我已经拼凑了一些代码(见下文),这些代码是我从各个地方采集的,它可以运行,但它没有上传文件。我怀疑我正在连接到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
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()部分将更多用于下载文件我不怀疑我把事情弄混了。正如我所说,这对我来说都是全新的。谢谢你的指点。。。。