我需要编写一个httpclient来使用http将巨大的文件上传到服务器。代码
public Stream function()
{
string postData = "This is a test that posts this string to a Web server.";
byte[] byteArray = Encoding.UTF8.GetBytes (postData);
// 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;
request.Method = "POST";
// Get the request stream.
Stream dataStream = request.GetRequestStream ();
// Write the data to the request stream.
return dataStream;
}
然后,我将dataStream返回给此函数的调用者,以便应用程序使用write继续写入流。然后,一旦完成写入,就会调用GetResponse,然后关闭流。但我得到了例外
ProtocolViolationException 写入流时在System.Net.HttpWriteStream.Write()处。
请帮助。
答案 0 :(得分:0)
可能抛出ProtocolViolationException
,因为请求方法是GET或HEAD。
您必须将方法设置为POST,如下所示:
// Set the 'Method' property of the 'Webrequest' to 'POST'.
request.Method = "POST";
请参阅MSDN上的HttpWebRequest.GetRequestStream Method文档。
答案 1 :(得分:0)
您是否考虑过在使用浏览器时使用Fiddler来调试流程?
这是一个简单的代理,允许您检查http流量。