无法访问从 php 的 okhttp 发送的 post 数据
Cannot acces post data sent from okhttp from php
我向服务器中的 php 发送带有 json 对象的 post 请求,但 php 一直告诉 $_POST 为空。
这是 okhttp 代码
public String postConection(JSONObject pJson, String pUrl) throws IOException {
final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
String dirArchivo = "http://10.0.2.2/SoulStoreProject/"+pUrl;
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(JSON, pJson.toString());
Request request = new Request.Builder()
.url(dirArchivo)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
这是 php 代码
$nick = $_POST['nick'];
$password = $_POST['password'];
$query = "
INSERT INTO
players(nick, password)
VALUES($nick,$password)
";
$DB->Execute($query);
您正在 post 使用 JSON 格式,因此您需要使用 file_get_contents('php://input')
获取 post 然后对其进行解码,以便将其作为数组。
$_POST
仅适用于使用 enctype=”multipart/form-data”
编码的 post
$post = json_decode(file_get_contents('php://input'),true);
$nick = $post['nick'];
$password = $post['password'];
$query = "INSERT INTO players(nick, password) VALUES(?,?)";
$sth = $DB->prepare($query);
$sth->Execute(array($nick, $password));
我向服务器中的 php 发送带有 json 对象的 post 请求,但 php 一直告诉 $_POST 为空。
这是 okhttp 代码
public String postConection(JSONObject pJson, String pUrl) throws IOException {
final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
String dirArchivo = "http://10.0.2.2/SoulStoreProject/"+pUrl;
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(JSON, pJson.toString());
Request request = new Request.Builder()
.url(dirArchivo)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
这是 php 代码
$nick = $_POST['nick'];
$password = $_POST['password'];
$query = "
INSERT INTO
players(nick, password)
VALUES($nick,$password)
";
$DB->Execute($query);
您正在 post 使用 JSON 格式,因此您需要使用 file_get_contents('php://input')
获取 post 然后对其进行解码,以便将其作为数组。
$_POST
仅适用于使用 enctype=”multipart/form-data”
$post = json_decode(file_get_contents('php://input'),true);
$nick = $post['nick'];
$password = $post['password'];
$query = "INSERT INTO players(nick, password) VALUES(?,?)";
$sth = $DB->prepare($query);
$sth->Execute(array($nick, $password));