Поэтому я отправляю данные в 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? Нужно ли что-то делать, чтобы это расшифровать?
Спасибо за любую помощь. Я работал над этим некоторое время и просто не могу понять, в чем проблема.
$_POST
переменная не установлена для всех запросов HTTP POST, но только для определенных типов, например application / x-www-form-urlencoded.
Поскольку вы публикуете запрос, содержащий сущность JSON (application / json), вам необходимо получить к нему доступ следующим образом.
$json = file_get_contents('php://input');
$entity= json_decode($json, TRUE);
Вы можете попробовать использовать следующий код вместо полезной нагрузки переменной String:
List<NameValuePair> payload = new ArrayList<NameValuePair>();
payload.add(new BasicNameValuePair("variable1", "value1");
Это сработало для меня