尝试将响应流写入文件时出错

时间:2010-05-28 15:00:24

标签: asp.net vb.net http stream response

我正在尝试测试其余的web服务,但是当我发布帖子并尝试检索将响应流保存到文件时,我得到一个异常,说“Stream不可读”。我做错了什么?

Public Sub PostAndRead()
    Dim flReader As FileStream = New FileStream("~\testRequest.xml", FileMode.Open, FileAccess.Read)
    Dim flWriter As FileStream = New FileStream("~\testResponse.xml", FileMode.Create, FileAccess.Write)
    Dim address As Uri = New Uri(restAddress)
    Dim req As HttpWebRequest = DirectCast(WebRequest.Create(address), HttpWebRequest)

    req.Method = "POST"
    req.ContentLength = flReader.Length
    req.AllowWriteStreamBuffering = True

    Dim reqStream As Stream = req.GetRequestStream()

    ' Get data from upload file to inData  
    Dim inData(flReader.Length) As Byte
    flReader.Read(inData, 0, flReader.Length)

    ' put data into request stream 
    reqStream.Write(inData, 0, flReader.Length)
    flReader.Close()
    reqStream.Close()

    ' Post Response
    req.GetResponse()

    ' Save results in a file
    Copy(req.GetRequestStream(), flWriter)
End Sub

2 个答案:

答案 0 :(得分:1)

您已关闭请求流

reqStream.Close()

然后在此语句中,请求流不再可用

Copy(req.GetRequestStream(), flWriter)

尝试靠近末尾

' put data into request stream 
reqStream.Write(inData, 0, flReader.Length)
flReader.Close()
'reqStream.Close() ' <- comment this

' Post Response
req.GetResponse()

' Save results in a file
Copy(req.GetRequestStream(), flWriter)
reqStream.Close()

答案 1 :(得分:0)

我发现了问题。该服务没有重新设置,因此流是空的。