Отправить данные для входа через POST с Android
Я пытаюсь отправить адрес электронной почты пользователя и пароль из моего приложения для Android на БД для входа через POST.
На стороне сервера я получаю свои данные так:
$email = $_POST['email'];
$password = clean($_POST['password'];
А на стороне андроида отправляю вот так:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("some real URL");
httppost.setHeader("Content-type", "application/json");
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("password", password));
httppost.setEntity(new UrlEncodedFormEntity(params));
// Execute the request
HttpResponse response;
try {
response = httpclient.execute(httppost);
......
Даже когда я ввожу действительные данные для входа в систему, он не работает и говорит, что нет адреса электронной почты или пароля. Я правильно отправляю вещи?
Я также попытался отправить данные, как показано ниже, но не сработало. Какие-либо предложения?
JSONObject obj = new JSONObject();
obj.put("email", email );
obj.put("password", password);
httppost.setEntity(new StringEntity(obj.toString()));
1 ответ
HttpPost.setEntity устанавливает тело запроса без каких-либо пар имя / значение, только необработанные данные поста. $_POST не ищет необработанные данные, только пары имен и значений, которые он преобразует в хеш-таблицу / массив. Вы можете отформатировать запрос так, чтобы он включал пары имя-значение.
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("json", json.toString()));
httppost.setEntity(new UrlEncodedFormEntity(params));
И иметь параметры в объекте json как:
JSONObject json = new JSONObject();
json.put("email", email );
json.put("password", password);
На стороне сервера вы можете получить данные как:
$jsonString = file_get_contents('php://input');
$jsonObj = json_decode($jsonString, true);
if( !empty($jsonObj)) {
try {
$email = $jsonObj['email'];
$password = $jsonObj['password'];
}
}