Я передаю объект JOSN из Java в PHP. Я использую сервер WAMP jdk 1.8 ang. Ниже приведен код 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"; }
Я не думаю, что это сработает.
PHP-скрипт не «прослушивает», как WebService. Однако после получения запроса скрипт обрабатывает его и пытается «распечатать» результат в HTML, а не в Java.
Получить тело ответа, получаемого экземпляром 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']); }
вместо.