Как декодировать JSON в PHP из запроса Java REST API?

Поэтому я отправляю данные в PHP API из Java с помощью POST.

То, что я пытаюсь сделать, это отправить определенную переменную в API в запросе POST, а затем использовать ее значение в моем PHP. Но в настоящее время в PHP, $_POST["variable1"] пустой.

Сценарий определенно вызывается, поскольку мне каждый раз отправляется электронное письмо, но PHP не читает переменную POST.

Моя Java выглядит так:

String line;
StringBuffer jsonString = new StringBuffer();

try {
URL url = new URL("https://www.x.com/api.php");
String payload = "{\"variable1\":\"value1\",\"variable2\":\"value2\"}";

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
writer.write(payload);
writer.close();

BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = br.readLine()) != null) {
jsonString.append(line);
}
br.close();
connection.disconnect();
}

Это основано на: Как отправить запрос полезной нагрузки в REST API в Java?

И PHP API содержит это:

if (isset($_POST["variable1"]) && isset($_POST["variable2"])) {
//Send email containing POST values
//Send 200 success header
} else {
//Send error email
//Send 400 error header
}

В настоящее время я получаю сообщение об ошибке каждый раз, когда запускаю код Java. Так что это отправка в API, но значение не читается правильно.

Я правильно отправляю его на Java? Или я что-то упустил в PHP? Нужно ли что-то делать, чтобы это расшифровать?

Спасибо за любую помощь. Я работал над этим некоторое время и просто не могу понять, в чем проблема.

0

Решение

$_POST переменная не установлена ​​для всех запросов HTTP POST, но только для определенных типов, например application / x-www-form-urlencoded.

Поскольку вы публикуете запрос, содержащий сущность JSON (application / json), вам необходимо получить к нему доступ следующим образом.

$json = file_get_contents('php://input');
$entity= json_decode($json, TRUE);
2

Другие решения

Вы можете попробовать использовать следующий код вместо полезной нагрузки переменной String:

List<NameValuePair> payload = new ArrayList<NameValuePair>();

payload.add(new BasicNameValuePair("variable1", "value1");

Это сработало для меня

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector