ホームページ >バックエンド開発 >PHPチュートリアル >Android クライアントと PHP サーバー間の単純な対話とログイン登録の例

Android クライアントと PHP サーバー間の単純な対話とログイン登録の例

WBOY
WBOYオリジナル
2016-06-23 13:12:581223ブラウズ

サーバーはローカル Apache サーバーを使用し、すべての php ファイルは D:AppServwww ディレクトリに書き込まれます。 。以前リクエストコードを書いたのですが、リクエストされたURLに問題があるため成功しませんでした。 。要求された URL は、自分のサーバーのポート番号と一致している必要があります。ポート番号を変更する方法は、次を参照してください: http://jingyan.baidu.com/article/a65957f4fe8ec424e67f9bff.html

独自のポート番号を設定した後、要求される URL 形式にも注意する必要があります:

php ファイルはローカルに保存されます。アドレスは次のようになります: D:AppServwwwget_data.json

Android クライアントの場合: URL------------- "http://10.0.2.2:8080/get_data. Web ページ内の json"
: HTTP http://127.0.0.1:8080/get_data.json/

ここで必ず正しく取得してください。 。次に、Apache を起動します





ネットワークリクエストは時間のかかる操作であるため、リクエストの内容はサブクラスに記述されます。を継承します糸。

1.MainActivity.java

package com.example.log_user;import android.support.v7.app.ActionBarActivity;import android.support.v7.app.ActionBar;import android.support.v4.app.Fragment;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;import android.os.Build;public class MainActivity extends ActionBarActivity {	EditText user_name;	EditText pass_word;	Button login;	Button zhuce;	    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        user_name=(EditText) findViewById(R.id.editText1);        pass_word=(EditText) findViewById(R.id.editText2);        login=(Button) findViewById(R.id.button1);        zhuce=(Button) findViewById(R.id.button2);                                          login.setOnClickListener(new OnClickListener(){        	        	String url="http://10.0.2.2:8080/config.inc.php";			@Override			public void onClick(View arg0) {							    String user=user_name.getText().toString();			    String pass=pass_word.getText().toString();				// TODO Auto-generated method stub				  new LoginThread(user,pass,url).start();			        Log.d("MAIN","-------------------->MAINSUCCESS");			        							}        	        });                zhuce.setOnClickListener(new OnClickListener(){        	String url="http://10.0.2.2:8080/test_signup.php";			@Override			public void onClick(View arg0) {				// TODO Auto-generated method stub				String user=user_name.getText().toString();			    String pass=pass_word.getText().toString();			    new signup(user,pass,url).start();			    Log.d("Main","------------------->signupsuccess");							}        	        });                                          }}




2.LoginThread.java ログイン

このクラスについて簡単に説明します。新しい子スレッドを作成します。スレッドから継承し、実行する必要がある操作を run メソッドに置きます。 gotoLogin メソッドは、入力されたユーザー名とパスワードがサーバーに接続されているデータベース内のフィールドと一致するかどうかを判断するために使用されます。ここでは httpClient を使用してポストリクエストを処理し、渡されたデータをこの配列に配置する必要があります。

ArrayList<NameValuePair>  params
投稿リクエストを実行すると、
HttpResponse respose=client.execute(post);
はこのオブジェクトを文字列に変換した後、httpresponse を返します。これは、実際には、リクエストされた php URL ページによってエコーされた文字列です。



String content=EntityUtils.toString(respose.getEntity());



package com.example.log_user;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;import android.content.res.Resources.Theme;import android.util.Log;import android.widget.Toast;public class LoginThread extends Thread {	String username;	String password;	String Url;		@Override	public void run() {		// TODO Auto-generated method stub		super.run();		Log.d("run","-------------------->MAINSUCCESS");        				boolean isLoginSuccess=gotoLogin(username,password,Url);				if(isLoginSuccess){			Log.d("Log","--------------------->登录成功");					}		else		{			Log.d("Log","--------------------->登录失败");					}	}		public LoginThread(String user,String pass,String url){		this.username=user;		this.password=pass;		this.Url=url;			}			public boolean  gotoLogin(String user,String pass,String url){		boolean issuccess=false;		String result;				  //发送post请求		HttpClient client=new DefaultHttpClient();	    HttpPost post = new HttpPost(url);			    //Post运作传送变数必须用NameValuePair[]阵列储存	    ArrayList<NameValuePair>  params=new ArrayList();	    params.add(new BasicNameValuePair("name",user));	    params.add(new BasicNameValuePair("password",pass));	    	     try {			post.setEntity(new UrlEncodedFormEntity(params));			try {				HttpResponse respose=client.execute(post);								if(respose.getStatusLine().getStatusCode()==HttpStatus.SC_OK){					String content=EntityUtils.toString(respose.getEntity());					Log.d("post","--------------------->success");					Log.d("post",content+"");										if(content.equals("logsuccess")){						issuccess=true;					}																			}				else				{					Log.d("post","--------------------->failes");				}															} catch (ClientProtocolException e) {				// TODO Auto-generated catch block				e.printStackTrace();			} catch (IOException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}		} catch (UnsupportedEncodingException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}			 		return issuccess;					}		}
3.signup.java 登録ページ: 原理はログイン


package com.example.log_user;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import android.util.Log;public class signup extends Thread {		private String username;	private String password;	private String url;	@Override	public void run() {		// TODO Auto-generated method stub		super.run();				boolean issuccess=doPOSThttp(username,password,url);		if(issuccess){			Log.d("sign","-------------->signsuccess");					}		else		{			Log.d("sign","-------------->signfailue");					}	}			public signup(String user,String password,String url){		this.username=user;		this.password=password;		this.url=url;			}			public   boolean  doPOSThttp(String username,String password,String url){		boolean issuccess=false;		HttpClient client=new DefaultHttpClient();		HttpPost post =new HttpPost(url);		ArrayList<NameValuePair> param=new ArrayList<NameValuePair>();		param.add(new BasicNameValuePair("name",username));		param.add(new BasicNameValuePair("password",password));				try {			post.setEntity(new UrlEncodedFormEntity(param));			try {				HttpResponse response=client.execute(post);								if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){					String cont=EntityUtils.toString(response.getEntity());					Log.d("post","------------>"+cont);										if(cont.equals("signsuccess"))					{						issuccess=false;							}									}																							} catch (ClientProtocolException e) {				// TODO Auto-generated catch block				e.printStackTrace();			} catch (IOException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}								} catch (UnsupportedEncodingException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}				return issuccess;	}			}



2つ。サーバーの準備

1. config.inc.php クライアントのログインリクエストに相当します。渡されたデータは $_POST メソッドによって取得され、データベース内のデータが照合され、照合が成功すると識別文字列がエコーされ、クライアントが応答を使用して判定用の文字列を取得できるようになります。


<?$db_host=localhost;$db_user="root";$db_pass="123456789";$db_name="stu";$table_name="student";/* mysql_query('set names utf8'); */if($con=mysql_connect($db_host,$db_user,$db_pass)){		}else{	echo "连接失败";}if(mysql_select_db(web_01)){}else{	echo "选择数据库失败";}$username=$_POST['name'];$sql="select * from my_user where name='$username'";$query=mysql_query($sql);if($row=mysql_fetch_array($query)){	if($_POST['password']==$row['password'])	echo "logsuccess";}mysql_close($con);?>


2.test_signup.php これはクライアントの登録リクエストに対応します。 ❤️

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。