WebRequest request = WebRequest.Create ("http://www.contoso.com/PostAccepter.aspx ");
            // Set the Method property of the request to POST.
            request.Method = "POST";
            // Create POST data and convert it to a byte array.
            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;
            // 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 ();
            // 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 ();这是msdn 上面的一个例子,用这个方法post 一般的字符 没有问题,但是post一个xml串 如下:
      System.Xml.XmlDocument xmlpostdata = new System.Xml.XmlDocument();
        xmlpostdata.Load("d:\\ss\\test.xml");
        string postData = xmlpostdata.InnerXml;在 WebResponse response = request.GetResponse (); 提示错误  WebExceptionStatus ProtocolError大家帮指点一下

解决方案 »

  1.   

    将string postData = xmlpostdata.InnerXml; 
    改为
    string postData = HttpUtility.HtmlEncode(xmlpostData.InnerXml);试试看
      

  2.   

    我再仔细看了你的代码,你看下test.xml的文件的编码是什么,是utf8吗?
    如果不是,就有可能出错。
    然后你的接收的页面能拿到数据后干了些什么事情,不要是因为页面拿到数据处理报错了。
      

  3.   

    我想问一下,为什么要编码一下呢? http协议本来就支持xml的啊,还有好多 都是直接传xml的,用下面的方法后,接收页面还需要解码一下
    string postData = HttpUtility.HtmlEncode(xmlpostData.InnerXml);