我在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#代码中可能有什么错误或遗漏?
由于
答案 0 :(得分:2)
您需要设置数据的内容类型,以便PHP知道如何解析它。
像这样:
request.ContentType = "application/x-www-form-urlencoded";
application/x-www-form-urlencoded
是发布表单数据时Web浏览器使用的标准MIME类型。