无法访问从 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));