2013-07-27 2 views
2

Я пытаюсь отправить адрес электронной почты пользователя и пароль из моего приложения для Android в db для входа через POST.отправить регистрационную информацию через POST с android

На стороне сервера я получаю мои данные, как это:

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

Даже при вводе в действительных регистрационных данных, он не работает и не указывает адрес электронной почты или пароль. Я правильно передаю вещи?

Я также попытался отправить данные, как показано ниже, но не работал. Какие-либо предложения?

+0

возможно дубликат [HTTP POST Android не отправляющего данных ] (http://stackoverflow.com/questions/10248297/android-http-post-not-sending-data) – cxzp

+0

нашел ответ в другом потоке, содержание вопроса было тем же самым ответом, что заголовок был неправильным – cxzp

ответ

0

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']; 
    } 
} 
Смежные вопросы