Помогите пожалуйста со следующим вопросом:
Есть приложение Xamarin которое отправляет данные на сайт методом POST, На сайте проверяю, если ли такой параметр POST но вот проверка не проходит, как будто и нет параметра, проверял отправку данных через метод GET все работает отлично.
В текущем примере на сериализацию пускаю отдельный класс, в котором есть сериализуемый мне класс KVMglob.korzinaModel
Реализация класса korzinaModel ниже
Код отправки данных на сервер
string json = JsonConvert.SerializeObject(KVMglob.korzinaModel);
HttpContent content = new StringContent(json);
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.PostAsync(url, content);
HttpContent responseContent;
if (response.StatusCode == HttpStatusCode.OK)
{
responseContent = response.Content;
var json_new = await responseContent.ReadAsStringAsync();
}
Код класса, который сериализуется в JSON:
public class KorzinaModel
{
//...
public int TotalSum { get; set; }
//...
}
Обработчик на сайте PHP:
if(isset($_POST['TotalSum']))
{
echo "true post";
}
UPD
при конвертировании моего объекта в JSON StringContent(json), он имеет тип text/plain и в коде PHP метод $_POST['TotalSum'] не сработает, подскажите, каким образом тогда можно отправить данные, чтобы его можно было прочитать в PHP через переменную $_POST['TotalSum']
$_POST['TotalSum']принимает данные application/x-www-form-urlencoded или multipart/form-data.StringContent(json)отправляет данные вtext/plain. Так что тут вы должны выбрать то, что все же хотите отправить! Еслиtext/plain- переписывайте PHP (я с ним не знаком, но вот как пример). Если же хотите принимать$_POST['TotalSum']- переписывайте отправку данных. – EvgeniyZ Oct 20 '18 at 12:54$_POSTпринимает толькоapplication/x-www-form-urlencodedилиmultipart/form-data. Как их отправить из C# вам в первом же комментарии ответили. Не устраивает этот вид данных, тогда отказывайтесь от$_POST, ибо он не предназначен для этого! Попробуйте использовать$HTTP_RAW_POST_DATA... – EvgeniyZ Oct 20 '18 at 13:09отправить данные, чтобы его можно было прочитать в PHP через переменную $_POST['TotalSum']. Тогда чем не устраивает первая ссылка, не пойму... – EvgeniyZ Oct 20 '18 at 13:46@EvgeniyZ первый способ чем мне не нравился, что мне придется свой парс писать на вставку значений из массива, но видимо по всему придется его написать, в процессе реализации, как задачку решу, обязательно отмечу задачку решенной и приложу решение. Спасибо за вашу активную помощь
– Денис Oct 20 '18 at 13:51$_POSTне принимает обычный текст, он создан для форм. Я бы на вашем место попросту переписал бы метод в PHP для приема текста. Можете пойти костыльным способом, отправляйтеFormUrlEncodedContentс одним значением (скажемstring Data) и в него засовывайте JSON. Тогда да, на PHP вы сможете сделать$_POST['Data']. Так что решайте, все необходимое мы вас вроде как разъяснили и показали... – EvgeniyZ Oct 20 '18 at 14:26