Я пытаюсь связаться с php-сервером из моего проекта gwt.
Я уже получил GET-запрос на работу, однако мой POST-запрос пока не работает.
Вот мой код:
Button synchronize = new Button("synchronize ",
new ClickHandler() {
public void onClick(ClickEvent event) {
String myurl = URL
.encode("php/test.php");
RequestBuilder builder = new RequestBuilder(
RequestBuilder.POST, myurl);
JSONObject jsonValue = new JSONObject();
jsonValue.put("name", new JSONString("Abc"));
builder.setHeader("Content-Type", "application/json");
try {
Request request = builder.sendRequest(jsonValue.toString(),
new RequestCallback() {
public void onError(Request request,
Throwable exception) {
processResponse("ERROR");
}
public void onResponseReceived(
Request request,
Response response) {
if (200 == response.getStatusCode()) {
processResponse(response
.getText());
} else {
processResponse("ERROR");
}
}
});
} catch (RequestException e) {
processResponse("ERROR");
}
}
});
public void processResponse(String responseString) {
Window.alert(responseString);
}
Я вижу, что почтовый запрос выходит, а полезный груз запроса является json-объектом. Однако, когда я пытаюсь получить доступ к данным в сценарии php, я получаю сообщение об ошибке, что индекс name
не определено
Вот PHP:
<?php
echo $_POST["name"];
?>
Что-то не так с моим PHP?
У кого-нибудь есть рабочий пример для этого?
Хотя я до сих пор не проверял документацию PHP, я склонен помнить, что $POST
содержит переменные почтового запроса, особенно полезные в x-www-form-urlencoded
запрос. .. проверил, да. Я не ошибаюсь 🙂
На самом деле вы хотите прочитать тело запроса post и проанализировать его содержимое в формате JSON в массиве PHP или хэше.
Чтобы прочитать тело см. Здесь: Как получить тело POST в php?
$entityBody = file_get_contents('php://input');
Разбор json описан здесь: Разбор файла JSON с помощью PHP
Я не буду цитировать код оттуда, так как он, возможно, не совсем соответствует вашим потребностям, но вы ищете json_decode($json, TRUE)
,
Других решений пока нет …