Как отправить данные через POST?
Вот сюда нужно отправить https://amanat.ru/api/v1/doc/
Я вот так отправляю, там написано должен быть ответ, никакого ответа нет, $result пустой, может я что не так делаю? У них техподдержка уже два дня молчит, там в общем тяжёлый случай.
<?php $products_json = '{ "token": "demo-bmLBmwvoaIDRQbVuykEHpOX6fEg14T", "data": [ { "product_id": "131", "title": "Кофеварка", "desc": "апвапва вап вап вап ", "price": "10000", "image_1": "https://elbit.ru//upload/iblock/bf2/1yb4p2csmjp6n9q2fnh2ueb4ujac2x00.jpeg", "brand": "ываыва", "color": "бежевый", "category": "8", } ] }'; $result = file_get_contents('https://amanat.ru/api/v1/uploadProducts', null, stream_context_create(array( 'http' => array( 'method' => 'POST', 'header' => array( "Content-Type: application/json; charset=utf-8rn" . "Content-Length: " . strlen($products_json) . "rn" . "Host: amanat.ru" ), 'content' => $products_json ) ) ) ); header('Content-Type: application/json; charset=UTF-8'); echo $result; ?> |
<?php $products_json = '{ "token": "demo-bmLBmwvoaIDRQbVuykEHpOX6fEg14T", "data": [ { "product_id": "131", "title": "Кофеварка", "desc": "апвапва вап вап вап ", "price": "10000", "image_1": "https://elbit.ru//upload/iblock/bf2/1yb4p2csmjp6n9q2fnh2ueb4ujac2x00.jpeg", "brand": "ываыва", "color": "бежевый", "category": "8", } ] }'; $result = file_get_contents('https://amanat.ru/api/v1/uploadProducts', null, stream_context_create(array( 'http' => array( 'method' => 'POST', 'header' => array( "Content-Type: application/json; charset=utf-8rn" . "Content-Length: " . strlen($products_json) . "rn" . "Host: amanat.ru" ), 'content' => $products_json ) ) ) ); header('Content-Type: application/json; charset=UTF-8'); echo $result; ?>
После передачи товаров, API выдаст нескольковариантов ответа:
Unauthorized - ошибка токена.
Error: no data - отсутствует ключ data или он пуст.
Success - успешная выгрузка. При наличии товаров, выгрузка которых не удалась, эти товары будут отображены.
Дополнительно:
Код ответа то какой?
я не знал что так можно посмотреть код ответа var_dump($http_response_header);
array(11) { [0]=> string(34) "HTTP/1.1 500 Internal Server Error" [1]=> string(30) "Server: nginx-reuseport/1.21.1" [2]=> string(35) "Date: Sat, 07 Oct 2023 13:03:04 GMT" [3]=> string(38) "Content-Type: text/html; charset=utf-8" [4]=> string(17) "Connection: close" [5]=> string(12) "Vary: Origin" [6]=> string(31) "X-Content-Type-Options: nosniff" [7]=> string(28) "Referrer-Policy: same-origin" [8]=> string(39) "Cross-Origin-Opener-Policy: same-origin" [9]=> string(38) "X-Powered-By: Phusion Passenger 4.0.60" [10]=> string(33) "Status: 500 Internal Server Error" } |
array(11) { [0]=> string(34) "HTTP/1.1 500 Internal Server Error" [1]=> string(30) "Server: nginx-reuseport/1.21.1" [2]=> string(35) "Date: Sat, 07 Oct 2023 13:03:04 GMT" [3]=> string(38) "Content-Type: text/html; charset=utf-8" [4]=> string(17) "Connection: close" [5]=> string(12) "Vary: Origin" [6]=> string(31) "X-Content-Type-Options: nosniff" [7]=> string(28) "Referrer-Policy: same-origin" [8]=> string(39) "Cross-Origin-Opener-Policy: same-origin" [9]=> string(38) "X-Powered-By: Phusion Passenger 4.0.60" [10]=> string(33) "Status: 500 Internal Server Error" }
но и вы явно что то не то шлете.
"category": "8",
попробуй убрать запятую тут, это не считается валидным json, например php json_decode его не распознает
- да я уже проверил в валидаторе, но там оказалось ошибки и со стороны сервера, техподдержка проснулась.
Ответы:
file_get_contents вообще далеко не всегда вообще работает как хочется. я бы использовал cURL как более настраиваемую библиотеку.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для отправки данных через метод POST веб-формы в PHP, вам необходимо создать HTML-форму с атрибутом method="post" и указать целевой скрипт обработки формы в атрибуте action.
Пример HTML-формы для отправки данных через POST:
<button type="submit">Submit</button><button type="submit">Submit</button>
В данном примере, данные из полей "username" и "password" будут отправлены на скрипт process.php методом POST.
Далее, в файле process.php вы можете получить отправленные данные с помощью суперглобального массива $_POST:
$username = $_POST['username']; $password = $_POST['password']; // Далее можно выполнить необходимые операции с полученными данными
Помните, что данные, отправляемые через POST, не отображаются в URL-адресе, в отличие от метода GET, что делает их более безопасными для отправки чувствительной информации, такой как пароли. Также не забудьте обработать и проверить данные, полученные из формы, перед их использованием в вашем скрипте для безопасности и целостности данных.