Получить json

Cramac

Новичок
Приветствую.
Подскажите, есть некий клиент на C# который шлет json данные на сервер
Код:
            var webClient = new System.Net.WebClient();
            webClient.Headers[HttpRequestHeader.Accept] = "application/json";
            webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
            webClient.Credentials = new System.Net.NetworkCredential("admin", "admin");
                var vm = new { action = "sendmessage", text = mess, id = cinfo};
                var json = JsonConvert.SerializeObject(vm);
            var result = webClient.UploadData(requestUrl, Encoding.UTF8.GetBytes(json));
на стороне сервера есть пхп скрипт
$raw_data=$HTTP_RAW_POST_DATA;
$data_back = json_decode($raw_data);

но в данном варианте ничего не возвращает. Что я делаю не так?

Попробовал записать в файл, пишет нужное вроде как
Код:
{"action":"sendmessage","text":"Синхронизация","id":"15"}
 

DiMA

php.spb.ru
Команда форума
в пхп напиши phpinfo() и посмотри, в какой переменной содержится то, что тебе передали из шарпа постом
 

Redjik

Джедай-мастер
The answer is that PHP only parses a POST payload automatically when it has a content type of application/x-www-form-urlencoded or multipart/form-data.
The reasons for this are historical — these two content types were essentially the only ones used years ago when PHP’s $_POST was implemented.
So with any other content type (even those that are quite popular today, like application/json), PHP doesn’t automatically load the POST payload.
 

Redjik

Джедай-мастер
ну да, он же с приложения на шарпе писал в файл
он же именно со стороны php не может данные получить
 

Cramac

Новичок
На стороне C# ничего не менял, на стороне PHP сделал так:

$raw_data=$HTTP_RAW_POST_DATA;
$data_back = json_decode($raw_data, true);

в итоге получаю то что приходит.

П.С. json строку я писал на стороне PHP а не в c#, т.е. скрипт получал ее но разобрать не мог, добавил true и пошло.
 

AnrDaemon

Продвинутый новичок
В чём проблема сделать
$data_back = json_decode(file_get_contents('php://input'), true);
?
 

Cramac

Новичок
ни в чем, так и работает сейчас, просто изначально
$data_back = json_decode(file_get_contents('php://input'));
не работало, а заработало так
$data_back = json_decode(file_get_contents('php://input'), true);
 
Сверху