Я отправляю HTTP-запрос из приложения Windows Forms на сервер PHP, размещенный на OpenShift (Redhat). Я использую метод POST с данными Json.
Проблема в том, что :
Вот код 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».
Вот строка журнала на сервере :
Вот линия в wirehark :
Кто-нибудь видит проблему? Не стесняйтесь говорить мне, если я не ясно. Может ли это перехватить данные? У моего php-файла есть проблема?
PHP $_POST
не понимает JSON.
То, что вы хотите, – это нечто вроде
// Error handling is left as an exercise $input = json_decode(file_get_contents('php://input'), true);
Затем вы сможете использовать $input
так, как вам кажется, хотите использовать $_POST
. См. json_decode
для дополнительных кнопок для поворота.