Android與PHP互動,Android傳遞JSON資料,PHP接受並儲存資料,androidjson

來源:互聯網
上載者:User

Android與PHP互動,Android傳遞JSON資料,PHP接受並儲存資料,androidjson

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

事不宜遲趕快實現吧!

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

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

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

首先把你想要傳送的資料封裝成Json格式的資料,可以使用Json包或者Gson,我用的是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>
第五步:測試


測試成功,資料可以正常的儲存!





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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.