C # WinForm bir PHP sayfası POST verileri

1 Cevap cñ

Ben bir Win NET3.5SP1 uygulaması var, ve bir PHP sayfası POST verileri için istiyorum.

Ben de JSON olarak geçen gittiğini, ancak düz POST ilk çalışma almak istiyordu.

İşte kod:

    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 ();

Ve PHP5.2 kodu:

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

Bu geri döner:

array(0) {}

Herhangi bir fikir? Ben o Ben sadece sunucu tarafında veri erişebilirsiniz kanıtlamak için onu geçti değerleri döndürmek istiyorum.

1 Cevap

i düzgün kodlamak ve fiili sonrası içerik göndermek gerekir inanıyorum. Sadece PHP (yani, $_POST değerler olarak ayarlamak olmaz) ile ne yapacağını bilmiyor ki, JSON seri hale konum gibi görünüyor

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...

Bu PHP sette sizin $_POST değişkeni almalısınız. Eğer JSON geçtiğinizde daha sonra gibi bir şey yapabilirsiniz:

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

ve PHP kapmak:

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