send json post php
Receive JSON POST with PHP
I’m trying to receive a JSON POST on a payment interface website, but I can’t decode it.
I get nothing when I try this:
I get nothing when I try this:
I get NULL when I try this:
The JSON format is (according to payment site documentation):
The payment site log says everything is OK. What’s the problem?
10 Answers 10
From your json and your code, it looks like you have spelled the word operation correctly on your end, but it isn’t in the json.
EDIT
Maybe also worth trying to echo the json string from php://input.
It is worth pointing out that if you use json_decode(file_get_contents(«php://input»)) (as others have mentioned), this will fail if the string is not valid JSON.
This can be simply resolved by first checking if the JSON is valid. i.e.
Edit: Note that removing strlen($json_params) above may result in subtle errors, as json_last_error() does not change when null or a blank string is passed, as shown here: http://ideone.com/va3u8U
It will give you POST data as is.
You will be able to decode it using json_decode() later.
This worked for me.
Quite late.
It seems, (OP) had already tried all the answers given to him.
Still if you (OP) were not receiving what had been passed to the «.PHP» file, error could be, incorrect URL.
Check whether you are calling the correct «.PHP» file.
(spelling mistake or capital letter in URL)
and most important
Check whether your URL has «s» (secure) after «http».
Example:
or either way.
add or remove the «s» to match your URL.
Как отправить JSON-данные на сервер
Первый шаг на пути к облачному хранению данных.
Огромный проект у нас впереди. Скоро мы будем делать менеджер шаблонов текста, который сможет хранить наши бесценные данные не локально на компьютере, а на сервере.
Для этого мы уже сделали рабочий прототип приложения, а потом разобрались с понятием JSON. Теперь попробуем отправить данные на сервер.
Как это устроено
Если мы хотим хранить данные на сервере и отправлять их туда в любой момент, нам нужно действовать так:
Первые три пункта сделаем на клиенте — нашей HTML-странице, а скрипт и настройки — на сервере. Скрипт будем писать на PHP, поэтому, если не знаете, что это и как с этим работать, — почитайте.
Чтобы было проще, мы отправим и обработаем на сервере совсем маленький JSON — в нём всего две пары «имя: значение», но даже со сложным запросом всё будет работать так же.
Готовим HTML-страницу
У нас будет очень простая страница, потому что самое важное сейчас — научиться работать с JSON-форматом, а красоту наведём позже.
На странице нам понадобятся:
Мы сразу подключим jQuery, чтобы в скрипте напрямую обращаться к полям ввода и месту для вывода результата. А ещё заранее зададим синий цвет для вывода ответа от сервера — так мы сразу отличим данные на странице от того, что нам ответил сервер.
На языке HTML это будет так:
Внешний вид очень простой, чтобы проверить работоспособность всей системы
Отправляем данные на сервер
Обычно, чтобы отправить данные на сервер, нужно делать запрос. Вы нажимаете кнопку на странице, браузер уходит думать, ждёт ответа сервера и рисует вам новую страницу в соответствии с этим ответом. Грубо говоря, запрос на сервер заставляет вашу страницу перезагружаться.
К счастью, инженеры давно придумали, как отправлять данные на сервер, не перезагружая страницу. Для этого используют JavaScript.
// создаём новый экземпляр запроса XHR
Для запроса нам нужно знать адрес, куда будем отправлять наш JSON — это и есть адрес нашего скрипта, который мы напишем позже. Мы будем писать его на PHP, поэтому заранее можем придумать ему имя и адрес, где он будет лежать: http://mihailmaximov.ru/projects/json/json.php.
// адрес, куда мы отправим нашу JSON-строку
Когда мы знаем адрес, мы можем открыть соединение, чтобы сервер был готов принять наши данные. Это значит, что мы пока ничего ценного туда не посылаем, а просто предупреждаем сервер, что скоро что-то прилетит:
// открываем соединение. url — это переменная с нашим адресом
Теперь напишем заголовок запроса, чтобы сервер понимал, какие данные мы ему пришлём и как ему их обрабатывать. Так как у нас JSON, то это и пропишем в заголовке:
// устанавливаем заголовок —
выбираем тип контента, который отправится на сервер,
в нашем случае мы явно пишем, что это JSON
Чуть ниже сразу пропишем поведение скрипта на случай ответа сервера. Сервер должен обработать наши данные, вернуть ответ, а мы должны этот ответ поймать и вывести на страницу:
Последнее, что нам осталось сделать, — вытащить наши введённые данные из полей, собрать из них JSON и отправить на сервер:
// преобразуем наши данные JSON в строку
Пишем PHP-скрипт для сервера
Задача скрипта пока будет очень простой — ему нужно будет получить наши данные и показать, что всё пришло как нужно. В PHP уже встроена команда, которая разбирает JSON-строку на составляющие, поэтому весь скрипт будет занимать три строчки:
Сам код нам нужно сохранить как json.php и положить в папку /projects/json/ на нашем сайте — так мы прописали в скрипте на JavaScript.
Настраиваем сервер
Если мы сейчас попробуем нажать на кнопку, браузер нам выдаст ошибку:
Штука в том, что если сервер заранее всем не сообщит, что он готов работать с запросами, то браузер не даст нашей локальной странице на компьютере получить данные с другого сервера в интернете. Это сделано в целях безопасности, например, чтобы при оплате картой данные не ушли на другой сервер кроме нужного.
Header set Access-Control-Allow-Origin «*»
Первая строка разрешает серверу работать с запросами от любых страниц (хоть это и небезопасно, но пока мы учимся — так можно). Вторая строка содержит список разрешённых запросов. Третья разрешает нужные нам заголовки в запросе.
Фактически этот файл сейчас означает: «разрешаю тебе принимать запросы со всех сайтов, вот такого типа запросы можно принимать, вот такие у них могут быть заголовки». В буквальном смысле методичка.
Откуда вы знаете, что нужны именно эти команды?
Когда мы писали эту статью, нам потребовалось почитать справочники и форумы, протестировать несколько вариантов команд и в итоге найти именно эту — ту, что работает.
Вся информация по командам и настройке в интернете уже есть. Нужно просто ее искать, анализировать и тестировать.
Теперь в интернете есть ещё и эта статья, которая поможет вам меньше искать 🙂
Перезапускаем нашу локальную страничку и пробуем её в действии.
Всё работает. Синий текст мы получили от PHP-скрипта на сервере. Связь налажена!
Что дальше
Мы научились отправлять данные на сервер и немного работать там с ними. Дальше попробуем заменить в наших проектах локальное хранение данных на хранение на сервере, чтобы проекты работали с любого браузера.
POST request with JSON body
I would like to add a post to a Blogger blog via PHP. Google provided the example below. How to use that with PHP?
You can add a post for a blog by sending a POST request to the post collection URI with a post JSON body:
5 Answers 5
You need to use the cURL library to send this request.
If, for some reason, you can’t/don’t want to use cURL, you can do this:
I think cURL would be a good solution. This is not tested, but you can try something like this:
If you do not want to use CURL, you could find some examples on stackoverflow, just like this one here: How do I send a POST request with PHP?. I would recommend you watch a few tutorials on how to use GET and POST methods within PHP or just take a look at the php.net manual here: httprequest::send. You can find a lot of tutorials: HTTP POST from PHP, without cURL and so on.
I made API sending data via form on website to prosperworks based on @Rocket Hazmat, @dbau and @maraca code. I hope, it will help somebody:
Not the answer you’re looking for? Browse other questions tagged php json post or ask your own question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.9.17.40238
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
How do I send a POST request using PHP?
Compare Request Timings
What is PHP Curl Library?
Curl and its core library libcurl were created by Daniel Stenberg and allow you to interact with servers through various types of protocols, including HTTP, HTTPS, FTP, and others. Libcurl supports HTTPS certificates, HTTP GET, POST, PUT, PATCH, and other HTTP methods, FTP file uploads (FTP file upload can also be done with PHP FTP extension), HTTP form based uploads, proxies, cookies, and user authentication. To use PHP Curl functions, you need to install libcurl 7.10.5 or newer and compile PHP with Curl support. The behavior of PHP Curl functions is affected by the curl.cainfo setting in the php.ini file.
What is the HTTP POST request method?
The HTTP POST request method is used to send data to the server. For example, to submit login or contact forms, to upload images, or to send JSON, XML, or PDF files to a server.
How to post requests using PHP Curl library?
CURL-less method for sending POST requests using PHP
How to post JSON using PHP?
To send JSON to the server, you must provide a Content-Type: application/json request header and provide the JSON data in the body of the POST message. The Content-Type header allows the server to correctly interpret and process the received data.
How to post XML using PHP?
To post an XML to the server, you must provide a Content-Type: application/xml request header and provide the XML data in the body of the POST message.
How to post HTML Form using PHP?
HTML forms must be submitted with a Content-Type: application/x-www-form-urlencoded request header and form data must be provided as key=value pairs, as shown in the example below.
How can I use Guzzle to send a POST request in JSON?
14 Answers 14
For Guzzle 5, 6 and 7 you do it like this:
For Guzzle
The simple and basic way (guzzle6):
To get the response status code and the content of the body I did this:
This worked for me (using Guzzle 6)
You can either using hardcoded json attribute as key, or you can conveniently using GuzzleHttp\RequestOptions::JSON constant.
Here is the example of using hardcoded json string.
This works for me with Guzzle 6.2 :
According to the documentation guzzle do the json_encode
Symfony version: 2.3
I had an experience recently about sending json with Guzzle. I use Symfony 2.3 so my guzzle version can be a little older.
I will also show how to use debug mode and you can see the request before sending it,
When i made the request as shown below got the successfull response;
@user3379466 is correct, but here I rewrite in full:
Simply use this it will work
I use the following code that works very reliably.
The code includes a trap to detect and report an unsuccessful or invalid call which will then return false.