首頁  >  文章  >  後端開發  >  Android與PHP交互,Android傳遞JSON數據,PHP接受並保存數據

Android與PHP交互,Android傳遞JSON數據,PHP接受並保存數據

WBOY
WBOY原創
2016-08-08 09:23:471467瀏覽

突然想到這樣一個功能,用戶使用某客戶端登陸的時候,客戶端做了以下兩件事,一個是跳轉頁面,返回個人資訊;第二個是將資訊回傳到伺服器,伺服器將資料保存在資料庫中。這樣一來用戶的個人資訊也就獲取到了!

事不宜遲趕快實現吧!

剛好我的SAE雲豆還沒消耗完,我就打算用PHP做後台!

客戶端與服務端傳送現在比較流行傳遞Json字串! (還好之前了解Json),android將資料包裝成Json格式,然後透過Httpclient傳送給PHP後台,php根據屬性名稱得到Json字串,然後做出解析,最後儲存(MySQL)流程就是這樣。

第一步:Android客戶端封裝Json格式資料

首先把你想要傳送的資料包是Json格式的資料,並且可以使用Jsonson,我用Json用的或是Gson,我想要傳送的是User對象,程式碼如下:

<span style="font-family:Microsoft YaHei;font-size:14px;">Gson gson = new Gson();
gson.toJson(user))
</span>
轉換格式非常簡單,不做太多介紹

第二步:在登入回傳線程中寫個非同步方法(當然了,你想在任何時候呼叫非同步都行,我就放在返回登入資訊的時候觸發非同步任務),非同步任務裡呼叫Httpclient發送請求的方法,程式碼如下:

<span style="font-family:Microsoft YaHei;font-size:14px;">/**
	 * 
	 * 描述 向后台发送user数据
	 * @param user
	 */
	<span style="font-family:Times New Roman;">public static void SaveDataToPhp(User user){
		Gson gson = new Gson();
		String url = "http://bmhjqs.sinaapp.com/ChzuAppDate/chzu_user_save.php";  
		HttpPost httpRequest = new HttpPost(url);  

		List<NameValuePair> params = new ArrayList<NameValuePair>();  
		params.add(new BasicNameValuePair("userJson", gson.toJson(user)));  
		try {  
			HttpEntity httpEntity = new UrlEncodedFormEntity(params,"utf-8");  
			httpRequest.setEntity(httpEntity);  
			HttpClient httpClient = new DefaultHttpClient();  
			HttpResponse httpResponse = httpClient.execute(httpRequest);  
			if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){  
				String result = EntityUtils.toString(httpResponse.getEntity());  
				Log.i("save", result);
			}else{  
			}  
		} catch (UnsupportedEncodingException e) {  
			e.printStackTrace();  
		} catch (ClientProtocolException e) {  
			e.printStackTrace();  
		} catch (IOException e) {  
			e.printStackTrace();  
		}  
	}</span>
</span>
此時,資料開始傳送到PHP了

第三步:接收Json資料

在php中,透過參數Key來取得Value,程式碼如下:

<span style="font-family:Microsoft YaHei;font-size:14px;">//接受客户端传来的json数据
<span style="font-family:Times New Roman;">$json_string = $_POST ["userJson"];
$user = json_decode ( $json_user );

if (ini_get ( "magic_quotes_gpc" ) == "1") {
	$json_string = stripslashes ( $json_string );
}</span>
$user = json_decode ( $json_string, true );//必须加参数‘true’,否则PHP不认为$user是个数组</span>
需要注意的寫在註解裡了,到此,就可以透過array[key]的方法來取得值了;

第四步:保存資料

我將資料保存在SAE下的Mysql資料庫,程式碼如下:

<span style="font-family:Microsoft YaHei;font-size:14px;">// 开始保存到数据库
<span style="font-family:Times New Roman;">$link = mysql_connect ( SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT, SAE_MYSQL_USER, SAE_MYSQL_PASS );
if ($link) {
	mysql_select_db ( SAE_MYSQL_DB, $link );
	//根据ID判断数据库里是否存在
	$isExit = "查询语句";	
	$result = mysql_query($isExit);
	if(mysql_num_rows($result) < 1){
		$sql = "插入语句...";
		mysql_query ( 'set names utf-8' );
		mysql_query ( $sql );
		echo 'STATE_OK';
	}else{
		echo 'STATE_EXIST';
	}
	mysql_close ( $link );
} else {
	echo 'STATE_DB_FAIL';
}</span></span>

測試成功,數據可以正常的保存!

如果客觀感覺有用的話,按個讚。 。 。我會更加的努力

如果有不對的地方還請指出,我會改正!

以上就介紹了Android與PHP交互,Android傳遞JSON數據,PHP接受並保存數據,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn