代码如下:
----------------------------------------
HttpWebResponse wr = null;
StreamReader sr = null;
StreamWriter sw = null;
try
{
    string strPostData = "test=123456&submit=submit";    HttpWebRequest mRequest = WebRequest.Create("http://www.test.com/a.asp") as HttpWebRequest;
    mRequest.Method = "POST"; 
    mRequest.ContentType="text/x-www-form-urlencoded";
    mRequest.ContentLength = strPostData.Length;    sw = new StreamWriter(mRequest.GetRequestStream());
    sw.Write(strPostData);       
    sw.Flush();    wr = (HttpWebResponse)mRequest.GetResponse();
    sr = new StreamReader(wr.GetResponseStream());
        tbMsg.Text  = sr.ReadToEnd();
}
catch(Exception err)
{
    MessageBox.Show(err.Message);
}
finally
{
    if(sw != null)
        sw.Close();
    if(sr != null)
        sr.Close();
    if(wr  != null)
        wr.Close();
}
----------------------------------------
http://www.test.com/a.asp的代码如下:
----------------------------------------
<%
  response.write Request.form() & "<BR>"
%>
----------------------------------------tbMsg.Text 总是<BR>,得不到POST过去的数据。谢谢大家帮忙啦!

解决方案 »

  1.   

    text/x-www-form-urlencoded??? should be "application/x-www-form-urlencoded"alsostring strPostData = "test=123456&submit=submit";
    byte[] bs = System.Text.Encoding.ASCII.GetBytes(strPostData);    HttpWebRequest mRequest = WebRequest.Create("http://www.test.com/a.asp") as HttpWebRequest;
        mRequest.Method = "POST"; 
        mRequest.ContentType="application/x-www-form-urlen";
        mRequest.ContentLength = bs.Length;    sw = new StreamWriter(mRequest.GetRequestStream());
        sw.Write(bs,0,bs.Length);       
        sw.Close();see
    http://www.west-wind.com/presentations/dotnetWebRequest/dotnetWebRequest.htm
      

  2.   

    晕!我说为什么昨天还好好的呢。另外,再请教老大一个问题:如果我Post的数据是:"test=中国人" 的话,那个ASP页面得到的是"test=中国",把"人"字给丢了,但是如果是"test=中国人人"的话,就不会丢字,这是怎么回事?
      

  3.   

    现在的代码:
    --------------------------------------
    HttpWebResponse wr = null;
    StreamReader sr = null;
    try
    {    HttpWebRequest mRequest = WebRequest.Create("http://www.testchuguo.com/a.asp") as HttpWebRequest;
        mRequest.Method = "POST"; 
        mRequest.ContentType="application/x-www-form-urlencoded";    string strPostData = "test=123456&submit=中国人";
        byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strPostData);
        mRequest.ContentLength = buffer.Length;    Stream stream = mRequest.GetRequestStream();
        stream.Write(buffer,0,buffer.Length);
        stream.Close();    wr = (HttpWebResponse)mRequest.GetResponse();
        sr = new StreamReader(wr.GetResponseStream());    tbMsg.Text  = sr.ReadToEnd();
    }
    catch(Exception err)
    {
        MessageBox.Show(err.Message);
    }
    finally
    {
        if(sr != null)
            sr.Close();
        if(wr  != null)
            wr.Close();
    }
      

  4.   

    string strPostData = "test=123456&submit=submit";mRequest.ContentLength = strPostData.Length;和这检查一下,是不是长度弄错了
      

  5.   

    现在我改成流直接写入字节数组的方法了:    string strPostData = "test=123456&submit=中国人";
        byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strPostData);
        mRequest.ContentLength = buffer.Length;    Stream stream = mRequest.GetRequestStream();
        stream.Write(buffer,0,buffer.Length);
        stream.Close();长度应该不会错吧?而且如果汉字的个数是偶数个的话,就没有问题。并且如果在汉字后加任意数量的字符的话,也没有问题。就是最后的数据是“奇数个汉字”的情况下发生问题。
      

  6.   

    问题解决,最终代码:
    ----------------------------------------
    HttpWebResponse wr = null;
    StreamReader sr = null;
    try
    {  HttpWebRequest mRequest = WebRequest.Create("http://www.testchuguo.com/a.asp") as HttpWebRequest;
      mRequest.Method = "POST"; 
      mRequest.ContentType="application/x-www-form-urlencoded";  string strPostData = "test=" + System.Web.HttpUtility.UrlEncode("中国人",System.Text.Encoding.GetEncoding("gb2312"));
      byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strPostData);
      mRequest.ContentLength = buffer.Length;  Stream stream = mRequest.GetRequestStream();
      stream.Write(buffer,0,buffer.Length);
      stream.Close();  wr = (HttpWebResponse)mRequest.GetResponse();
      sr = new StreamReader(wr.GetResponseStream(),System.Text.Encoding.GetEncoding("gb2312"));  tbMsg.Text  = sr.ReadToEnd();
    }
    catch(Exception err)
    {
      MessageBox.Show(err.Message);
    }
    finally
    {
      if(sr != null)
          sr.Close();
      if(wr  != null)
          wr.Close();
    }
      

  7.   

    下面的 sr = new StreamReader(wr.GetResponseStream());
    改成 sr = new StreamReader(wr.GetResponseStream(),Encoding.UTF8); 试一下