我想从我的C#应用程序发送字符串到我的PHP页面,我尝试了一些我在互联网上找到的不同解决方案。其中之一是:
C#代码:
string url = "http://localhost:8080/test.php";
string str = "test";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
string Data = "message=" + str;
byte[] postBytes = Encoding.ASCII.GetBytes(Data);
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = postBytes.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
Stream resStream = response.GetResponseStream();
var sr = new StreamReader(response.GetResponseStream());
string responseText = sr.ReadToEnd();
和PHP代码:
foreach($_POST as $pdata)
echo $pdata;
但这只是一个空白页面。我不知道问题是什么。
答案 0 :(得分:0)
我很久没有使用过c#了,但这应该是解决方案:
string url = "http://localhost:8080/test.php";
string str = "test";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
string Data = "message=" + str;
UTF8Encoding utf8 = new UTF8Encoding();
byte[] postBytes = utf8.GetBytes(Data);
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = postBytes.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
Stream resStream = response.GetResponseStream();
var sr = new StreamReader(resStream);
string responseText = sr.ReadToEnd();
我所做的是将编码从ASCII更改为UTF8。 UTF8是application/x-www-form-urlencoded
所期望的。
至于你的php,我假设你的foreach方法有开始和结束括号。
修改强>
好的,我注意到你的c#中有错误。您获得了两次响应流。这可能会导致一些错误,但这是我将如何构建我的PHP:
<?php
foreach($_POST as $key => $value){
echo $value . "<br>";
}
?>