C#将文件上传到HTTPServer

时间:2012-03-30 06:29:44

标签: c# http

我需要编写一个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()处。

请帮助。

2 个答案:

答案 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流量。