C # – запрос POST Json, отправленный, но не полученный сервером PHP

Я отправляю HTTP-запрос из приложения Windows Forms на сервер PHP, размещенный на OpenShift (Redhat). Я использую метод POST с данными Json.

Проблема в том, что :

  • данные, казалось, были правильно отправлены (я вижу пакеты в wirehark)
  • php-скрипт запускается правильно, и я вижу в журнале, что сообщение POST получено
  • но данные POST не получены.

Вот код C # :

string json = "{\"user\":\"test\"," + "\"n\":\"2\"}"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://........rhcloud.com/webservices.php"); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = json.Length; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(json); streamWriter.Close(); var httpResponse = (HttpWebResponse)request.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); Debug.WriteLine("R : " + result); } } 

Вот код PHP :

 echo "Start Saving ! "; // Handle Posted Data From C# App if (isset($_POST) && !empty($_POST)) { echo 'Data Recieved'; } else { // Error echo 'No POST Data Found'; } 

Функция всегда возвращает : «Начать экономить! Нет данных POST».

Вот строка журнала на сервере : https://dl.dropboxusercontent.com/u/14737942/log.png

Вот линия в wirehark : https://dl.dropboxusercontent.com/u/14737942/Wireshark_capture.png

Кто-нибудь видит проблему? Не стесняйтесь говорить мне, если я не ясно. Может ли это перехватить данные? У моего php-файла есть проблема?

PHP $_POST не понимает JSON.

То, что вы хотите, – это нечто вроде

 // Error handling is left as an exercise $input = json_decode(file_get_contents('php://input'), true); 

Затем вы сможете использовать $input так, как вам кажется, хотите использовать $_POST . См. json_decode для дополнительных кнопок для поворота.