2015-05-20 2 views
-1

Я использую андроид для общения с этим скриптом php: моя цель - извлечь имя пользователя и пароль из базы данных. Это код php:Почтовый запрос с андроидными пустыми параметрами

<?php 
require 'db.php'; 
$mysqli = new mysqli("localhost", $username, $password, $database); 

if (mysqli_connect_errno()) { 
    echo "Errore in connessione al DBMS: ".mysqli_connect_error(); 
    exit(); 
} 
$username=$_POST['username']; 
$password=$_POST['password']; 
$myusername=mysql_real_escape_string($username); 
$mypassword=mysql_real_escape_string($password); 
//$mypassword=md5($password); 
$query = "SELECT userid , image FROM `utente` WHERE username='$myusername' AND password='$mypassword' LIMIT 1"; 
$result = $mysqli->query($query); 
if($result->num_rows >0) 
{ 
    while($row = $result->fetch_array(MYSQLI_ASSOC)) 
     $rows[]=$row; 
} 
header("Content-type: text/json"); 
echo json_encode($rows); 
$result->close(); 
$mysqli->close(); 
?> 

Имя пользователя и пароль являются параметрами сообщений. Я попробую сделать запрос на почту в android, используя библиотеку URLConnection. Код ниже:

public class HTTPRequest extends AsyncTask<String, String, JSONArray> { 

    @Override 

    protected JSONArray doInBackground(String... params) { 
     URL url; 
     HttpURLConnection urlConnection = null; 
     JSONArray response = new JSONArray(); 

     try { 
      url = new URL(params[0]); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.setDoInput(true); 
      urlConnection.setDoOutput(true); 
      urlConnection.setRequestProperty("username","marco"); 
      urlConnection.setRequestProperty("password","marco"); 
      urlConnection.setRequestMethod("POST"); 


//   String username = "45dae3a1-ec1f-455a-a14b-3152001a93aa"; 
//   String password= "WSiwlK9q8Qeb"; 
//   String userpassword = username + ":" + password; 
//   String encodedAuthentication = Base64.encodeToString(userpassword.getBytes(), Base64.NO_WRAP); 
//   urlConnection.setRequestProperty("Authorization", "Basic " + 
//     encodedAuthentication); 
      urlConnection.setRequestProperty("Content-Type", "text/plain; charset=utf-8"); 
      List<NameValuePair> paramskey = new ArrayList<NameValuePair>(); 
      String username="giovanni"; 
      String password="luca"; 
      paramskey.add(new BasicNameValuePair("username", username.toString())); 
      paramskey.add(new BasicNameValuePair("password", password.toString())); 
      //paramskey.add(new BasicN4ameValuePair("thirdParam", paramValue3)); 

      OutputStream os = urlConnection.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(
        new OutputStreamWriter(os, "UTF-8")); 
      writer.write(getQuery(paramskey)); 
      //Log.i("writer",writer.toString()); 
      writer.flush(); 
      writer.close(); 
      os.close(); 
      int responseCode = urlConnection.getResponseCode(); 
      if(responseCode == HttpStatus.SC_OK){ 
       String responseString = readStream(urlConnection.getInputStream()); 
       Log.i("Risposta", responseString); 
       response = new JSONArray(responseString); 
       String responsestrings=response.toString(1);  //for debug 
       //Log.v("personalityInsightsService", responsestrings);   //for debug 
      }else{ 
       //Log.v("personalityInsightsService", "Response code:"+ responseCode); 
       return response; 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if(urlConnection != null) 
       urlConnection.disconnect(); 
     } 

     return response; 
    } 

    private String readStream(InputStream in) { 
     BufferedReader reader = null; 
     StringBuffer response = new StringBuffer(); 
     try { 
      reader = new BufferedReader(new InputStreamReader(in)); 
      String line = ""; 
      while ((line = reader.readLine()) != null) { 
       response.append(line); 
       //Log.i(("Risposta"),line); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (reader != null) { 
       try { 
        reader.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     return response.toString(); 
    } 

    private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException 
    { 
     StringBuilder result = new StringBuilder(); 
     boolean first = true; 

     for (NameValuePair pair : params) 
     { 
      if (first) 
       first = false; 
      else 
       result.append("&"); 

      result.append(URLEncoder.encode(pair.getName(), "UTF-8")); 
      result.append("="); 
      result.append(URLEncoder.encode(pair.getValue(), "UTF-8")); 
     } 

     return result.toString(); 
    } 
} 

В основной деятельности я выполнить этот код, чтобы сделать запрос:

HTTPRequest httpRequest = new HTTPRequest(); 
     httpRequest.execute("http://appmuseum.altervista.org/login.php"); 
     try { 
      JSONArray httpResponse = httpRequest.get(); 
      if(httpResponse != null) 
       Log.i("STRINGA",httpResponse.toString()); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } catch (ExecutionException e) { 
      e.printStackTrace(); 
     } 
    } 

мне удалось comunicated с PHP скрипт, но имя пользователя после параметра и пароль пустым, так ответ сообщения jsonObject пуст. Как я могу это исправить?

+0

«Моя цель - извлечь имя пользователя и пароль из базы данных». Пожалуйста, объясни. Ваш клиент android также отправляет их. – greenapps

ответ

1

Вы не можете выполнить execute() и get() в своем экземпляре asyncTask httpRequest. Удалите весь код после .execute(). Никогда не делайте get(). Добавьте onPostExecute для обработки результата doInBackground.

+0

нормально, лучше получить результат onPostExecute, но это решение не устраняет проблему; в запросе http post параметры имени пользователя и пароля по-прежнему пусты. –

+1

Где? Ваш скрипт - беспорядок. Вы используете оба параметра до того, как получили свое значение из массива $ _POST. – greenapps

+0

Можете ли вы написать код, чтобы исправить проблему? Я не понимаю, где это ошибка. –

Смежные вопросы