通过POST将C#变量发送到PHP

时间:2011-10-23 14:57:27

标签: c# http post

我正在开发一个项目,我需要将变量作为帖子发送到PHP脚本。

C#调用一些方法来设置字符串变量,然后我需要将其发布到PHP脚本,以便PHP脚本可以使用变量中的数据。

我怎样才能做到这一点,我尝试了谷歌,但它们看起来有点复杂,以及如何从PHP获取数据,这很难解决帖子在示例中开始和结束的地方。

我需要知道的是如何将数据发布到脚本而不是C#,然后读取PHP脚本的内容。

感谢您提供的任何帮助。

更新 我认为我没有很好地解释自己想达到的目标。

这样做的目的是通过帖子将字符串格式的数据发送到PHP页面。然后我想将脚本加载到用户Web浏览器中,他们将能够看到php页面,当他们从php页面提交表单时,它可以使用发送给它的帖子中的信息。

以下是将要发生的事情的一步一步

  1. 用户在C#程序
  2. 中按下按钮
  3. C#程序设置字符串变量
  4. C#将帖子发送到PHP页面
  5. 用户浏览器中加载了相同的php页面
  6. 当页面加载时,它会将来自c#的后期数据处理成变量,以便可以使用数据
  7. 用户提交表单,处理后的帖子数据与表单发布数据一起使用
  8. 希望这更有意义,这就是为什么我说我不希望C#返回PHP脚本正在做的事情,因为用户需要能够使用php页面。

1 个答案:

答案 0 :(得分:1)

检查出来:

public static string Post(string service, IDictionary<string, string> objects)
    {
        // Create a request using a URL that can receive a post. 
        WebRequest request = WebRequest.Create(ServiceAdress+service+".php");
        // Set the Method property of the request to POST.
        request.Method = "POST";
        // Create POST data and convert it to a byte array.

        StringBuilder b= new StringBuilder();
        foreach(KeyValuePair<string,string>  o in objects)
            b.Append(HttpUtility.UrlEncode(o.Key)).Append("=").Append(HttpUtility.UrlEncode(o.Value??"")).Append("&");
        if (PHPSESSID != null)
            b.Append("PHPSESSID=").Append(PHPSESSID).Append('&');

        string postData = b.ToString(0, b.Length - 1);
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = byteArray.Length;
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        WebResponse response = request.GetResponse();

        if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK)
            return null;

        dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = reader.ReadToEnd();
        Console.WriteLine(responseFromServer);
        reader.Close();

        dataStream.Close();
        response.Close();
        return responseFromServer;
    }