【问题标题】:I get error when trying to write response stream to a file尝试将响应流写入文件时出现错误
【发布时间】:2011-02-25 04:24:06
【问题描述】:

我正在尝试测试一个 REST Web 服务,但是当我发布一个帖子并尝试检索将响应流保存到一个文件时,我收到一个异常,提示“流不可读”。我做错了什么?

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

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

    • 它继续抛出同样的信息。有没有办法使用浏览器手动将 xml 发布到 web 服务,例如:POST url/Endpoint
    【解决方案2】:

    我发现了问题。该服务没有重新处理任何内容,因此流为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      相关资源
      最近更新 更多