c# - 从 C# WinForm 将数据发布到 PHP 页面

标签 c# php winforms

我有一个 winForms NET3.5SP1 应用程序,想将数据发布到 PHP 页面。

我也打算将它作为 JSON 传递,但我想先直接使用 POST。

代码如下:

    Person p = new Person();
    p.firstName = "Bill";
    p.lastName = "Gates";
    p.email = "asdf@hotmail.com";
    p.deviceUUID = "abcdefghijklmnopqrstuvwxyz";

    JavaScriptSerializer serializer = new JavaScriptSerializer();
    string s;
    s = serializer.Serialize(p);
    textBox3.Text = s;
    // s = "{\"firstName\":\"Bill\",\"lastName\":\"Gates\",\"email\":\"asdf@hotmail.com\",\"deviceUUID\":\"abcdefghijklmnopqrstuvwxyz\"}"
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.davemateer.com/ig/genius/newuser.php");
    //WebRequest request = WebRequest.Create("http://www.davemateer.com/ig/genius/newuser.php");
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    //byte[] byteArray = Encoding.UTF8.GetBytes(s);
    byte[] byteArray = Encoding.ASCII.GetBytes(s);
    request.ContentLength = byteArray.Length;
    Stream dataStream = request.GetRequestStream();
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close ();

    WebResponse response = request.GetResponse();
    textBox4.Text = (((HttpWebResponse)response).StatusDescription);
    dataStream = response.GetResponseStream ();

    StreamReader reader = new StreamReader(dataStream);
    string responseFromServer = reader.ReadToEnd ();
    textBox4.Text += responseFromServer;

    reader.Close ();
    dataStream.Close ();
    response.Close ();

而PHP5.2的代码是:

<?php
echo "hello world";
var_dump($_POST);
?>

返回:

array(0) {}

有什么想法吗?我希望它返回我刚刚传递给它的值,以证明我可以从服务器端访问数据。

最佳答案

我相信您需要正确编码并发送实际的帖子内容。看起来你只是序列化为 JSON,PHP 不知道如何处理(即,它不会将其设置为 $_POST 值)

string postData = "firstName=" + HttpUtility.UrlEncode(p.firstName) +
                  "&lastName=" + HttpUtility.UrlEncode(p.lastName) +                    
                  "&email=" + HttpUtility.UrlEncode(p.email) +
                  "&deviceUUID=" + HttpUtility.UrlEncode(p.deviceUUID);
byte[] byteArray = Encoding.ASCII.GetBytes(postData);
// etc...

这应该在 PHP 中设置您的 $_POST 变量。稍后当您切换到 JSON 时,您可以执行以下操作:

string postData = "json=" + HttpUtility.UrlEncode(serializer.Serialize(p) );

并从 PHP 中获取:

$json_array = json_decode($_POST['json']);

关于c# - 从 C# WinForm 将数据发布到 PHP 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/304337/

相关文章:

javascript - 在 javascript 文件中使用 php

php - 当用户发布某些内容时,如何更改 mysql 时间戳的格式

c# - 浏览控件和组件

c# - 使用 "using"关键字时出现问题

c# - Devexpress PopupMenu Closing 事件类似于 Windows Contextmenu Closing 事件

c# - 在 C# 中读取 .txt 文件的十六进制值

c# - 如何修复这个来自 Nib 的 "Selector invoked ... on a managed object ... that has been GC' ed",其中包含未使用的自定义 UITableViewCell?

在单独的线程中调用时,C# 2.0 函数不起作用

c# - 如何在绑定(bind)失败时避免设置本地值(因此继承的值将传播)

php - 避免创建临时表/制作一个 "local left join"PHP MySQL