Я отправляю сообщение с объектом 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);
Вы публикуете в формате 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));
Других решений пока нет …