博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Android PHP 通过JSON进行数据交互

Posted on 2014-11-16 23:05  不剃头的一休哥  阅读(336)  评论(0编辑  收藏  举报

一、首先是Android客户端解析PHP返回的JSON数据

1、PHP代码(这里用到了数据库,如果没有准备数据库的话,可以自定义字符串)

<?php
	$link=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
	mysql_query("SET NAMES utf8");
	mysql_select_db(SAE_MYSQL_DB,$link);
	$sql=mysql_query("select * from users ",$link);
	while($row=mysql_fetch_assoc($sql))
		$output[]=$row;
	echo json_encode($output);
	mysql_close();
?>

2、Android端代码(部分代码)

private Boolean checkuser(String url, String username, String password) {
		int res = 0;
		HttpClient client = new DefaultHttpClient();
		StringBuilder str =new StringBuilder();
		HttpGet httpget = new HttpGet(url);
		BufferedReader buffer = null;
		try
		{
			HttpResponse httpRes = client.execute(httpget);
			res = httpRes.getStatusLine().getStatusCode();
			if(res == 200)
			{
				buffer = new BufferedReader(new InputStreamReader(httpRes.getEntity().getContent()));
				for(String s = buffer.readLine();s != null;s = buffer.readLine())
				{
					str.append(s);
				}				
				buffer.close();
				JSONArray json = new JSONArray(str.toString());				
				String struser = "";
				String strpass = "";
				for(int i = 0;i < json.length();i++)
				{
					JSONObject jsonObject = (JSONObject)json.opt(i);
					struser = jsonObject.getString("username");
					strpass = jsonObject.getString("password");
					if(struser.equals(username)&&strpass.equals(password))
					{
						return true;
					}				
				}
				return false;				
			}
			else
			{
				Log.v(null, "httperror");
				return false;
			}
		}catch(Exception e)
		{
			e.printStackTrace();
			return false;
		}		
	}

这不是重点,重点在下面PHP解析Android发送的JSON数据  

二、PHP解析Android发送的JSON数据

1、Android端代码(部分)

 

Boolean RegUser(String url,String regname, String regpass) {		
		ArrayList<NameValuePair> arrayList = new ArrayList<NameValuePair>();
		arrayList.add(new BasicNameValuePair("username", regname));
		arrayList.add(new BasicNameValuePair("password",regpass));
		try{
			HttpClient httpclient = new DefaultHttpClient();
			HttpPost httppost = new HttpPost(url);
			httppost.setEntity(new UrlEncodedFormEntity(arrayList));
			HttpResponse httpres = httpclient.execute(httppost);			
			return true;
		}catch(Exception e)
		{
			e.printStackTrace();
			return false;
		}
				
	}  

整个发送过程尤其重要!!!!!并且容易出错。

2、PHP端代码

 

<?php    
    $name = $_REQUEST['username'];
    $pass = $_REQUEST['password'];
    $link=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
 	mysql_query("SET NAMES utf8");
	mysql_select_db(SAE_MYSQL_DB,$link);
    $sql = "insert into users (username,password) values ('$name','$pass')";
    mysql_query($sql,$link);
    mysql_close($link);
?>

 

这里接收客户端JSON数据用的是REQUEST,和POST的区别不是很清楚。

 

总结:

1、找了一下午,最后发现问题应该是客户端发送数据不成功。

2、也有可能是我之前用的是POST接收。

3、代码出问题还是不要找我,虽然是我写的,但是它自己长歪了。

4、如果转载,请注明出处(by 不剃头的一休哥)。