Vb.net RESTWebService:如何从web服务向客户端获取zip文件
我正在尝试创建一个函数来下载制作的zip文件可从REST Web服务和调用Web服务的客户端(两者都是用VB.Net编写的)获得。 WebService方面我有以下代码:Vb.net RESTWebService:如何从web服务向客户端获取zip文件,vb.net,web-services,rest,Vb.net,Web Services,Rest,我正在尝试创建一个函数来下载制作的zip文件可从REST Web服务和调用Web服务的客户端(两者都是用VB.Net编写的)获得。 WebService方面我有以下代码: Public Function DownloadZipFile(filename As String) As Stream Implements ILiveUpdateWS.DownloadZipFile WebOperationContext.Current.OutgoingResponse.ContentTyp
Public Function DownloadZipFile(filename As String) As Stream Implements ILiveUpdateWS.DownloadZipFile
WebOperationContext.Current.OutgoingResponse.ContentType = "application/txt"
Dim f As New FileStream(DESTINATION_PATH_ZIP_FILE + "Upgrade_Package.zip",FileMode.Open)
Dim length As Integer = CType(f.Length, Integer)
WebOperationContext.Current.OutgoingResponse.ContentLength = length
Dim buffer As Byte() = New Byte(length) {}
Dim sum As Integer = 0
Dim count As Integer
While ((count = f.Read(buffer, sum, length - sum)) > 0)
sum += count
End While
f.Close()
Dim mimeType = ""
WebOperationContext.Current.OutgoingResponse.ContentType = mimeType
Return New MemoryStream(buffer)
End Function
sUri = "http://localhost:35299/LiveUpdateWS/Download?" & "piv"
....
Dim req As HttpWebRequest = WebRequest.Create(sUri.ToString())
req.Method = "GET"
req.KeepAlive = False
Dim response As HttpWebResponse = req.GetResponse()
Dim resp As Net.HttpWebResponse = DirectCast(req.GetResponse(), Net.HttpWebResponse)
Dim stIn As IO.StreamReader = New IO.StreamReader(response.GetResponseStream())
客户端我有以下代码:
Public Function DownloadZipFile(filename As String) As Stream Implements ILiveUpdateWS.DownloadZipFile
WebOperationContext.Current.OutgoingResponse.ContentType = "application/txt"
Dim f As New FileStream(DESTINATION_PATH_ZIP_FILE + "Upgrade_Package.zip",FileMode.Open)
Dim length As Integer = CType(f.Length, Integer)
WebOperationContext.Current.OutgoingResponse.ContentLength = length
Dim buffer As Byte() = New Byte(length) {}
Dim sum As Integer = 0
Dim count As Integer
While ((count = f.Read(buffer, sum, length - sum)) > 0)
sum += count
End While
f.Close()
Dim mimeType = ""
WebOperationContext.Current.OutgoingResponse.ContentType = mimeType
Return New MemoryStream(buffer)
End Function
sUri = "http://localhost:35299/LiveUpdateWS/Download?" & "piv"
....
Dim req As HttpWebRequest = WebRequest.Create(sUri.ToString())
req.Method = "GET"
req.KeepAlive = False
Dim response As HttpWebResponse = req.GetResponse()
Dim resp As Net.HttpWebResponse = DirectCast(req.GetResponse(), Net.HttpWebResponse)
Dim stIn As IO.StreamReader = New IO.StreamReader(response.GetResponseStream())
Response的contentLength=242699,因此似乎接收到流,但StIn似乎为空。解决此问题的最佳解决方案是什么?我认为您忘记了从StreamReader读取文件
Dim inSaveFile As String = "C:\stream\test.doc"
If Dir(inSaveFile) <> vbNullString Then
Kill(inSaveFile)
End If
Dim swFile As System.IO.StreamWriter
Dim fs As System.IO.FileStream = System.IO.File.Open(inSaveFile, System.IO.FileMode.CreateNew, System.IO.FileAccess.Write)
swFile = New System.IO.StreamWriter(fs, System.Text.Encoding.Default)
Dim response1 As System.Net.HttpWebResponse = req.GetResponse()
Dim resp As Net.HttpWebResponse = DirectCast(req.GetResponse(), Net.HttpWebResponse)
Dim stIn As IO.StreamReader = New IO.StreamReader(response1.GetResponseStream(), encoding:=System.Text.Encoding.Default)
swFile.WriteLine(stIn.ReadToEnd)
swFile.Close()
fs.Close()
Dim inSaveFile As String=“C:\stream\test.doc”
如果Dir(inSaveFile)vbNullString,则
Kill(inSaveFile)
如果结束
将文件设置为System.IO.StreamWriter
Dim fs As System.IO.FileStream=System.IO.File.Open(inSaveFile、System.IO.FileMode.CreateNew、System.IO.FileAccess.Write)
swFile=New System.IO.StreamWriter(fs,System.Text.Encoding.Default)
Dim response1作为System.Net.HttpWebResponse=req.GetResponse()
Dim resp As Net.HttpWebResponse=DirectCast(req.GetResponse(),Net.HttpWebResponse)
Dim stIn As IO.StreamReader=新IO.StreamReader(response1.GetResponseStream(),编码:=系统.Text.encoding.Default)
swFile.WriteLine(stIn.ReadToEnd)
swFile.Close()
财政司司长(关闭)