我是新手,我想做的是将图像作为字节数组发布到URL,但是当我尝试获得响应时出现错误。
以下是MSDN的代码:
// Create a request using a URL that can receive a post.
WebRequest request = WebRequest.Create(BASE_URL);
// Set the Method property of the request to POST.
request.Method = "POST";
// Create POST data and convert it to a byte array.
byte[] byteArray = fileContent; // my image as bytearray
// Set the ContentType property of the WebRequest.
request.ContentType = "application/x-www-form-urlencoded";
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
// Get the request stream.
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();
// Get the response.
WebResponse response = request.GetResponse(); // here it stops
// Display the status.
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
Console.WriteLine(responseFromServer);
// Clean up the streams.
reader.Close();
dataStream.Close();
response.Close();
在Stream,CanRead和CanSeek中调试时为false,而Length和Position都抛出相同的错误:
'((System.Net.ConnectStream)数据流)。长度'抛出一个例外 键入' System.NotSupportedException'。
我尝试复制到内存流,但同样的问题。我在互联网上找到的任何东西都没有帮助我解决这个问题。
答案 0 :(得分:2)
关于调试
的正常行为NetworkStream不支持随机访问网络数据 流。 CanSeek属性的值,表示是否为 流支持寻求,总是假的;阅读立场 property,读取Length属性或调用Seek方法会 抛出NotSupportedException。
关于您的MSDN示例
笔记说明
如果抛出WebException,请使用的Response和Status属性 确定服务器响应的异常。
虽然有很多方法可以使用WebRequest
将这个包装在try catch
中并计算实际异常是什么以及它告诉你的内容是值得的
try
{
WebResponse response = request.GetResponse();
...
...
}
catch(WebException ex)
{
// inspect Response and Status properties
}