Отправить данные для входа через 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'];
    }
}
Другие вопросы по тегам