Я новичок в android.Я создал приложение для входа в систему для модуля leave.For подключения с mySql через PHP. Я пробовал этот код с веб-сайта.
package com.example.axdroid; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class Axdroid extends Activity { Button b; EditText et,pass; TextView tv; HttpPost httppost; StringBuffer buffer; HttpResponse response; HttpClient httpclient; List<NameValuePair> nameValuePairs; ProgressDialog dialog = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_axdroid); b = (Button)findViewById(R.id.Button01); et = (EditText)findViewById(R.id.username); pass= (EditText)findViewById(R.id.password); tv = (TextView)findViewById(R.id.tv); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog = ProgressDialog.show(Axdroid.this, "", "Validating user...", true); Intent i=new Intent(getApplicationContext(),Userpage.class); startActivity(i); new Thread(new Runnable() { public void run() { login(); } }).start(); } });} void login(){ try{ httpclient=new DefaultHttpClient(); httppost= new HttpPost("http://192.168.1.222/AndroidLeave/check.php"); //add your data nameValuePairs = new ArrayList<NameValuePair>(2); // Always use the same variable name for posting ie the android side variable name and php side variable name should be similar, nameValuePairs.add(new BasicNameValuePair("username",et.getText().toString().trim())); // $Edittext_value = $_POST['Edittext_value']; nameValuePairs.add(new BasicNameValuePair("password",pass.getText().toString().trim())); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); //Execute HTTP Post Request response=httpclient.execute(httppost); // edited by James from coderzheaven.. from here.... ResponseHandler<String> responseHandler = new BasicResponseHandler(); final String response = httpclient.execute(httppost, responseHandler); System.out.println("Response : " + response); runOnUiThread(new Runnable() { public void run() { tv.setText("Response from PHP : " + response); dialog.dismiss(); } }); if(response.equalsIgnoreCase("User Found")){ runOnUiThread(new Runnable() { public void run() { Toast.makeText(Axdroid.this,"Login Success", Toast.LENGTH_SHORT).show(); } }); startActivity(new Intent(getApplicationContext(), Userpage.class)); }else{ showAlert(); } }catch(Exception e){ dialog.dismiss(); System.out.println("Exception : " + e.getMessage()); } } public void showAlert(){ Axdroid.this.runOnUiThread(new Runnable() { public void run() { AlertDialog.Builder builder = new AlertDialog.Builder(Axdroid.this); builder.setTitle("Login Error."); builder.setMessage("User not Found.") .setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); AlertDialog alert = builder.create(); alert.show(); } }); } }
Я не могу выполнить эту работу, пока вы отлаживаете код … элемент управления перескакивает с httpclient, чтобы поймать код. Будем признательны за любую помощь в сортировке этого.
Это файл PHP. Я проверил его отдельно и работает.
<?php $hostname_localhost ="localhost"; $database_localhost ="mydatabase"; $username_localhost ="root"; $password_localhost =""; $localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost) or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db($database_localhost, $localhost); $username = $_POST['username']; $password = $_POST['password']; $query_search = "select * from tbl_user where username = '".$username."' AND password = '".$password. "'"; $query_exec = mysql_query($query_search) or die(mysql_error()); $rows = mysql_num_rows($query_exec); //echo $rows; if($rows == 0) { echo "No Such User Found"; } else { echo "User Found"; } ?>
@ashwani Это страница Axdroid.java (основная страница активности)
public class Axdroid extends Activity { Button b; EditText et,pass; TextView tv; HttpPost httppost; StringBuffer buffer; HttpResponse response; HttpClient httpclient; List<NameValuePair> nameValuePairs; ProgressDialog dialog = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_axdroid); b = (Button)findViewById(R.id.Button01); et = (EditText)findViewById(R.id.username); pass= (EditText)findViewById(R.id.password); tv = (TextView)findViewById(R.id.tv); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String url="http://192.168.1.222/AndroidLeave/check.php"; JSONParser jparser= new JSONParser(); ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("tag", "getcategory")); params.add(new BasicNameValuePair("username", et.getText().toString())); params.add(new BasicNameValuePair("password", pass.getText().toString())); JSONObject jObj= jparser.makeHttpRequest(url, "POST", params);try { String success = jObj.get("success").toString(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } });}'
для разбора данных я использую следующий класс
JsonParser.java
public class JSONParser { InputStream is = null; JSONObject jObj = null; String json = ""; public JSONParser() { } // function get json from url // by making HTTP POST or GET method 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, "UTF-8"), 8); StringBuilder sb = new StringBuilder(""); Log.d("reader value in json parser", reader.toString()); String line = ""; while ((line = reader.readLine()) != null) { Log.d("line in JsonParser", line); sb.append(line + "\n"); } is.close(); json = sb.toString(); Log.d("Json value", json); } catch (Exception e) { Log.d("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); json = ""; } catch (JSONException e) { Log.d("JSON Parser", "Error parsing data " + e.toString()); } return jObj; } }
теперь в вашей деятельности попытайтесь передать такой URL-адрес
String url="place your url here"; JSONParser jparser= new JSONParser(); params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("tag", "getcategory")); params.add(new BasicNameValuePair("username", username.getText().toString())); params.add(new BasicNameValuePair("password", password.getText().toString())); JSONObject jobj= jparser.makeHttpRequest(url, "POST", params);
// теперь здесь извлекаем данные из json как:
String success= jobj.get("success");
Надеюсь это поможет!
также в вашем php-файле вам нужно использовать функцию json_encode
перед echo
!
Используйте эту функцию. Изменения в соответствии с вашим требованием.
void login() { String data = null; InputStream is = null; StringBuilder sb; String result; try { HttpClient httpsClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost("http://192.168.1.4/check.php"); List<NameValuePair> nameValue = new ArrayList<NameValuePair>(); nameValue.add(new BasicNameValuePair("username", "" + et.getText().toString())); nameValue.add(new BasicNameValuePair("password", "" + pass.getText().toString())); httpPost.setEntity(new UrlEncodedFormEntity(nameValue)); HttpResponse httpRes = httpsClient.execute(httpPost); HttpResponse httpResponce = httpsClient.execute(httpPost); HttpEntity httpEntity = httpResponce.getEntity(); is = httpEntity.getContent(); } catch(Exception e) {} try { BufferedReader BufR = new BufferedReader(new InputStreamReader(is, "iso-8859-1"),8); sb = new StringBuilder(); sb.append(BufR.readLine() + "\n"); String line = "0"; while((line = BufR.readLine()) != null) { sb.append(line + "\n"); } result = sb.toString(); Toast.makeText(getApplicationContext(), result.toString(), Toast.LENGTH_LONG).show(); if(result.equals("User Found")) { Toast.makeText(getApplicationContext(), "User Found ", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "User Not Found ", Toast.LENGTH_LONG).show(); } } catch (Exception e) { Log.e("log_tag", "Error in convert String" + e.toString()); } }