Невозможно получить запрос JSON POST в PHP
633 просмотра
2 ответа
Я передаю объект JOSN из Java в PHP. Я использую JDK 1,8 анг сервер WAMP. Ниже приведен код Java.
import java.io.IOException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.json.simple.JSONObject;
/**
*
* @author PReeeT Dash
*/
public class FromJava
{
public static void main(String[] args) throws IOException
{
JSONObject json = new JSONObject();
json.put("someKey", "someValue");
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
try
{
HttpPost request = new HttpPost("http://localhost/PGP/JSONReq/tophp.php");
StringEntity params = new StringEntity(json.toString());
request.addHeader("content-type", "application/json");
request.setEntity(params);
httpClient.execute(request);
// handle response here...
} catch (Exception ex)
{
System.out.println("Error: Cannot Estabilish Connection");
}
finally
{
httpClient.close();
}
}
}
PHP скрипт:
$data = json_decode(file_get_contents("php://input"));
echo($data);
Когда я запускаю файл PHP, он всегда показывает пустую страницу. Может кто-нибудь, пожалуйста, помогите мне понять, почему это не работает.
Когда я запускаю следующий код PHP, он всегда выполняет условие else.
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$data = json_decode(file_get_contents("php://input"));
echo($data);
}
else
{
echo "XXXXXX";
}
Автор: Pritam
Источник
Размещён: 12.11.2019 09:53
Ответы (2)
0 плюса
Я не думаю, что это будет работать.
PHP-скрипт не "слушает", как WebService. Однако после получения запроса скрипт обрабатывает его и пытается «напечатать» результат в HTML, а не в Java.
Автор: Alexis Ochoa Размещён: 29.02.2016 03:590 плюса
Извлеките тело ответа, которое получает ваш экземпляр org.apache.http.client, и, например, отправьте его в System.out
CloseableHttpResponse response = httpClient.execute(request);
IOUtils.copy(response.getEntity().getContent(), System.out);
Для IOUtils используйте import org.apache.commons.io.IOUtils;
В случае, если вы используете Maven, зависимость
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
Скорее всего, вы получите выход
Catchable fatal error<: Object of class stdClass could not be converted to string
потому echo($data)
что не работает. json_decode (...) возвращает класс stdClass. Пытаться
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// json_decode(..., true) will return an array instead of a stdClass
$data = json_decode(file_get_contents("php://input"), true);
var_export($data);
}
else
{
var_export($_SERVER['REQUEST_METHOD']);
}
вместо.
Автор: VolkerK Размещён: 29.02.2016 05:21Вопросы из категории :
- java В чем разница между int и Integer в Java и C #?
- java Как я могу определить IP моего маршрутизатора / шлюза в Java?
- java Каков наилучший способ проверки XML-файла по сравнению с XSD-файлом?
- java Как округлить результат целочисленного деления?
- java Преобразование списка <Integer> в список <String>
- php Как вы отлаживаете PHP-скрипты?
- php Заставьте XAMPP / Apache обслуживать файл вне htdocs
- php Как включить файлы PHP, которые требуют абсолютного пути?
- php Скрипт входа со скрытыми кнопками
- php How can I find unused functions in a PHP project
- json Безопасное превращение строки JSON в объект
- json Как я могу "красиво" отформатировать вывод JSON в Ruby on Rails?
- json Сериализация JSON в jQuery
- json Можете ли вы использовать запятую в JSON-объекте?
- json Можно ли использовать комментарии в формате JSON?
- post В чем разница между POST и PUT HTTP REQUEST?
- post Как я могу отправить HTTP-запрос POST на сервер из Excel, используя VBA?
- post Как вы отправляете сообщение в iframe?
- post Ruby: Как опубликовать файл через HTTP как multipart / form-data?
- post Получить параметры в URL с CodeIgniter