Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net RESTWebService:如何从web服务向客户端获取zip文件_Vb.net_Web Services_Rest - Fatal编程技术网

Vb.net RESTWebService:如何从web服务向客户端获取zip文件

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

我正在尝试创建一个函数来下载制作的zip文件​​可从REST Web服务和调用Web服务的客户端(两者都是用VB.Net编写的)获得。 WebService方面我有以下代码:

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()
财政司司长(关闭)