2015-01-07 2 views
-3

im в настоящее время разрабатывает приложение для Android, ранее я работал с автономной базой данных SQLite для Android, и теперь я пытаюсь узнать о онлайн-базе данных (в настоящее время работает с XAMPP localhost)Изучение Basic JSON, MySQL и его соединение

Я прочитал некоторые учебники, но все еще любопытный путать о JSon, MySQL, и его связи ..

Я хочу задать несколько основных концепций здесь, чтобы уточнить, что я и сам не допустить, чтобы в дальнейшем потеряли свой путь,

(Исправьте меня, если я ошибаюсь) Поэтому, если я хочу, чтобы мое приложение хранило базу данных на линии и делать CRUD (Create, Read, Update, Delete) операция, это то, что должно быть сделано:

  1. сделать связь между моим файлом .php и моей базе данных

  2. Подключить андроид устройства с мой PHP файл

  3. Передаваемые данные из Java в PHP с помощью JSON

  4. PHP будет получать данные с $ _POST или $ _GET затем хранят его в локальной переменной

  5. PHP будет делать запрос, используя принятый переменную из Явы

  6. PHP будет возвращать что-то с помощью json_encode

  7. Java получит их с JSON, а

Потом я смотрел и посмотреть этот учебник - MyBringBack Tutorial

И попытался реализовать то, что там .. Я попытался запустить эти коды в своем pc-браузере, и это сработало, но когда я попытался запустить эти коды на моем устройстве Android, он не работает, он ничего не возвращает, и я не знаю, где моя ошибка,

Не могли бы вы помочь мне проверить эти коды?

Спасибо заранее

Вот мой код:

LoginActivity.java

public class LoginActivity extends Activity implements View.OnClickListener { 

private EditText etUsername; 
private EditText etPassword; 
private Button bLogin, bRegis, bAdmin; 
userSessionManager session; 
Database checkLogin = new Database(LoginActivity.this); 
static final String loginUrl = "http://192.168.0.102:8081/webservice/doLogin.php"; 

JSONParser jsonParser = new JSONParser(); 
private static final String TAG_SUCCESS = "Success"; 
private static final String TAG_MESSAGE = "Message"; 
private ProgressDialog pDialog; 
String a,b; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.login_screen); 
    session = new userSessionManager(getApplicationContext()); 

    Declaration(); 
    bLogin.setOnClickListener(this); 
    bRegis.setOnClickListener(this); 
    bAdmin.setOnClickListener(this); 
} 

private void Declaration() { 
    // TODO Auto-generated method stub 
    etUsername = (EditText) findViewById(R.id.etLoginUsername); 
    etPassword = (EditText) findViewById(R.id.etLoginPassword); 
    bLogin = (Button) findViewById(R.id.bLogin); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.bLogin: 
     new AttemptLogin().execute(); 

     break; 
} 



class AttemptLogin extends AsyncTask<String, String, String> { 

    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    boolean failure = false; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(LoginActivity.this); 
     pDialog.setMessage("Attempting login..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... args) { 
     // TODO Auto-generated method stub 
     // Check for success tag 
     int success; 
     String username = etUsername.getText().toString(); 
     String password = etPassword.getText().toString(); 
     //Toast.makeText(getApplicationContext(), username+password, Toast.LENGTH_SHORT).show(); 
     try { 
      // Building Parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("username", username)); 
      params.add(new BasicNameValuePair("password", password)); 

      //Log.d("request!", "starting"); 
      // getting product details by making HTTP request 
      JSONObject json = jsonParser.makeHttpRequest(loginUrl, "POST", 
        params); 

      // check your log for json response 
      Log.d("Login attempt", json.toString()); 

      // json success tag 
      success = json.getInt(TAG_SUCCESS); 
      if (success == 1) { 
       Log.d("Login Successful!", json.toString()); 
       Intent intent = new Intent("com.thesis.teamizer.USERVIEW"); 
       startActivity(intent); 
       return json.getString(TAG_MESSAGE); 
      } else { 
       Log.d("Login Failure!", json.getString(TAG_MESSAGE)); 
       Toast.makeText(getApplicationContext(), "a", 
         Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent("com.thesis.teamizer.ROOTVIEW"); 
       startActivity(intent); 
       return json.getString(TAG_MESSAGE); 

      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 

    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog once product deleted 
     pDialog.dismiss(); 
     Toast.makeText(getApplicationContext(), a, 
       Toast.LENGTH_SHORT).show(); 

    } 

} 

}

JSONParser.java

public class JSONParser { 

static InputStream is = null; 
static JSONObject jObj = null; 
static String json = ""; 

// constructor 
public JSONParser() { 

} 


public JSONObject getJSONFromUrl(final String url) { 

    // Making HTTP request 
    try { 
     // Construct the client and the HTTP request. 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 

     // Execute the POST request and store the response locally. 
     HttpResponse httpResponse = httpClient.execute(httpPost); 
     // Extract data from the response. 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     // Open an inputStream with the data content. 
     is = httpEntity.getContent(); 

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     // Create a BufferedReader to parse through the inputStream. 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     // Declare a string builder to help with the parsing. 
     StringBuilder sb = new StringBuilder(); 
     // Declare a string to store the JSON object data in string form. 
     String line = null; 

     // Build the string until null. 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 

     // Close the input stream. 
     is.close(); 
     // Convert the string builder data to an actual string. 
     json = sb.toString(); 
    } catch (Exception e) { 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 

    // Try to parse the string to a JSON object 
    try { 
     jObj = new JSONObject(json); 
    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 

    // Return the JSON Object. 
    return jObj; 

} 


// function get json from url 
// by making HTTP POST or GET mehtod 
public JSONObject makeHttpRequest(String url, String method, 
     List<NameValuePair> params) { 

    // Making HTTP request 
    try { 

     // check for request method 
     if(method == "POST"){ 
      // request method is POST 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

     }else if(method == "GET"){ 
      // request method is GET 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      String paramString = URLEncodedUtils.format(params, "utf-8"); 
      url += "?" + paramString; 
      HttpGet httpGet = new HttpGet(url); 

      HttpResponse httpResponse = httpClient.execute(httpGet); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 
     }   

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 
     json = sb.toString(); 
    } catch (Exception e) { 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 

    // try parse the string to a JSON object 
    try { 
     jObj = new JSONObject(json); 
    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 

    // return JSON String 
    return jObj; 

} 
} 

doLogin.PHP

<?php 

require("config.inc.php"); 

if(!empty($_POST)){ 
//gets user's info based off a username 

    if(empty($_POST['username']) || empty($_POST['password'])){ 
     $response["success"] = 0; 
     $response["message"] = "Please enter both username n password"; 
     die(json_encode($response)); 
    } 

    $query = "SELECT MemberUsername, MemberPassword From Member Where MemberUsername = :username"; 

    $query_params = array(':username' => $_POST['username']); 

    try{ 
     $stmt = $db->prepare($query); 
     $result = $stmt->execute($query_params); 
    }catch(PDOException $ex){ 
     $response["succeess"] =0; 
     $response["message"]= "Database error1. please try again"; 
     die(json_encode($response)); 
    } 

    $validate_info=false; 

    //fetching rows from query 
    $row = $stmt->fetch(); 
    $login_ok=false; 

    if($row){ 
     if($_POST['password']==$row['MemberPassword']){ 
     $login_ok=true; 
     } 
    } 

    if($login_ok){ 
    //userLogin 
     $response["success"]=1; 
     $reponse["message"] = "Login Successfull"; 
     die(json_encode($response)); 
    }else{ 
     $response["success"]=0; 
     $response["message"]= "Login Failed"; 
     die(json_encode($response)); 
    } 

} 

else { 
?> 

<h1> Register </h1> 
<form action = "doLogin.php" method="post"> 
    Username : <br /> 
    <input type = "text" name = "username" placeholder= "user name"> <br/> 
    Password : <br /> 
    <input type = "password" name = "password" placeholder= "password"> <br/> 
    <input type = "submit" value = "login" > 
</form> 

<?php 
} 
?> 
+1

Не могли бы вы рассказать о том, что «это не работает, и я не знаю, где моя ошибка»? –

+1

Не работает, не говорит нам много. КАК это не сработало? У вас есть ошибки? аварии? Поврежденные данные? Нет данных? –

+0

Это ничего не возвращает, я создал намерение внутри doInBackground и проверял результат, который передается с php на java .. –

ответ

1

могут быть и другие вопросы, но конечно, в Java вы не можете сравнивать строки с помощью ==, как if(method == "POST") вы должны заменить его if(method.equals("POST")) и то же самое для всех других == для строки сравнить

один раз makeHttpRequest() вызывается, ничего не соответствует методу if, и никаких http-вызовов не производится, поэтому метод возвращает Null.