从C#app发送一个字符串到PHP

时间:2014-03-22 17:07:02

标签: c# php networking

我想从我的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;

但这只是一个空白页面。我不知道问题是什么。

1 个答案:

答案 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>";
}
?>