У меня есть приложение winForms NET3.5SP1 и вы хотите получать данные POST на страницу 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...
это должно получить вашу переменную $_POST
в наборе PHP. позже, когда вы переключаетесь на JSON, вы можете сделать что-то вроде:
string postData = "json=" + HttpUtility.UrlEncode(serializer.Serialize(p) );
и захватить PHP:
$json_array = json_decode($_POST['json']);