我正在向 API 服务器发送 POST 请求,并且我已经重用了之前在其他服务器上成功完成此操作的代码,并且由于某种原因(我无法弄清楚为什么)它不起作用。我收到错误:
“在写入所有字节之前无法关闭流。”
即使我正确声明了内容长度,但我不确定我在这里缺少什么......
data = data + "</posts>"
Dim postBytes As [Byte]() = Encoding.UTF8.GetBytes(data)
Thread.Sleep(10000)
track = data
If uri.Scheme = uri.UriSchemeHttps Then
Dim request As HttpWebRequest = HttpWebRequest.Create(url)
request.Method = "POST"
' //通常我只使用 request.contentlength = postbytes.length 或 data.length
request.ContentLength = System.Text.Encoding.UTF8.GetByteCount(data)
request.ContentType = "application/xml"
request.KeepAlive = False
request.Timeout = 120000
request.Credentials = New System.Net.NetworkCredential("xxxxxxxxxxxx", "xxxxxxxxx")
Using writer As New StreamWriter(request.GetRequestStream(), Encoding.UTF8)
writer.Write(postBytes)
writer.Flush()
writer.Close()
End Using
Using oResponse As HttpWebResponse = request.GetResponse()
Dim reader As New StreamReader(oResponse.GetResponseStream())
responseData = reader.ReadToEnd()
reader.Close()
oResponse.Close()
End Using
request.Abort()
End If
End If
Catch e As WebException
....
The Exception
被抛出是因为您写入的字节数少于WebRequest
期望。例如,如果您在中设置了 75 个字节ContentLength
属性,并且您在上写入 69 个字节RequestStream
并关闭它,将抛出异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)