Android — не может получить доступ к данным, отправленным из ohttp из переполнения стека

Я отправляю сообщение с объектом json на php на сервере, но php продолжает говорить, что $ _POST пусто.

это код охттп

    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);

0

Решение

Вы публикуете в формате JSON, поэтому вам нужно получить пост с file_get_contents('php://input') а затем декодировать его так, чтобы он был в виде массива.

$_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));
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]