我正在尝试从我的gwt项目与php服务器进行通信。
我已经收到了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);
}
我可以看到post请求消失,请求有效负载是json-object。但是,当我尝试访问php脚本中的数据时,我收到索引name
未定义的错误。
这是PHP:
<?php
echo $_POST["name"];
?>
我的PHP有问题吗?
有没有人有这方面的工作示例?
答案 0 :(得分:1)
虽然到目前为止我还没有检查PHP文档,但我倾向于记住,$POST
包含post请求的变量,在x-www-form-urlencoded
请求中特别有用。 ..检查一下,是的。我是对的: - )
您真正想要的是读取post请求的主体并将其JSON内容解析为PHP数组或散列。
要阅读正文,请参阅此处:How to get body of a POST in php?
$entityBody = file_get_contents('php://input');
此处描述了解析json:Parsing JSON file with PHP
我不会从那里引用代码,因为它可能不完全符合您的需求,但您会寻找json_decode($json, TRUE)
。