使用C#客户端发送POST变量时出现问题

时间:2011-06-02 15:30:08

标签: c# web-services post client

我在C#客户端,我有以下代码:

Uri uri = new Uri(@"http://myserver/test.php");
HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
request.Method = WebRequestMethods.Http.Post;
//request.ContentType = "application/json";

string req = "er3=12";
Console.WriteLine("Req: " + req);

System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();

byte[] byteData = encoder.GetBytes(req);
request.ContentLength = byteData.Length;

using (Stream postStream = request.GetRequestStream())
{
  postStream.Write(byteData, 0, byteData.Length);
}

那是在调用一个php测试页面(很快就会被休息服务取代):

<?php
  echo "post vars:<br>";
  foreach ($_POST as $key => $value) {
    echo "$key -> $value<br>";
  }
  echo "end post vars:<br>";
?>

我的问题是,当我运行应用程序时,在响应中我得到"post vars:<br>end post vars:<br>",因此未收到变量er3。

如果我运行一个简单的html表单,则正确读取post变量。

C#代码中可能有什么错误或遗漏?

由于

1 个答案:

答案 0 :(得分:2)

您需要设置数据的内容类型,以便PHP知道如何解析它。

像这样:

request.ContentType = "application/x-www-form-urlencoded";

application/x-www-form-urlencoded是发布表单数据时Web浏览器使用的标准MIME类型。