多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Android客戶端與PHP服務端通信(二)

Android客戶端與PHP服務端通信(二)

來源:程序員人生   發布時間:2015-06-06 08:29:29 閱讀次數:2726次

概述

    本節通過1個簡單的demo程序簡單的介紹Android客戶端通過JSON向PHP服務端提交定單,PHP服務端處理定單后,通過JSON返回結果給Android客戶端。正常來說,PHP服務端在處理定單進程中,需要與MySQL數據庫交互,這里為了簡單起見,暫時省掉MySQL。

通訊格式

首先,需要定下客戶端與服務端之間通訊格式,以下表


Android客戶端

    客戶端與服務端采取JSON數據格式通訊,同時采取HTTP通訊協議交互,采取POST方式提交結果。同時還要注意1點,與WEB服務器通訊的進程需要另開辟1個線程進行數據的獲得,這樣可以避免獲得程序失敗以后,主線程還可以運行,我開始實驗的時候沒有注意到這1點,由于通訊失敗造成了程序停止運行。

    同時由于需要網絡通訊,所以需要在AndroidManifest.xml中添加以下權限語句


<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    程序的構造圖比較簡單,只有1個MainActivity.java。


    運行效果為


MainActivity.java內容以下

package com.lygk.jsontest; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.protocol.HTTP; import org.json.JSONObject; import com.example.jsontest.R; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private static final String TAG="LYGK"; Button BtnRequest; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "啟動程序 "); BtnRequest = (Button)findViewById(R.id.BtnRequest); //綁定事件源和監聽器對象 BtnRequest.setOnClickListener(new ButtonRequestListener()); } //內部類,實現OnClickListener接口 //作為第2個按鈕的監聽器類 class ButtonRequestListener implements OnClickListener { public void onClick(View v) { Log.i(TAG, "按鈕按下 "); StartRequestFromPHP(); Log.i(TAG, "履行終了 "); } } private void StartRequestFromPHP() { //新建線程 new Thread(){ public void run(){ try { SendRequest(); } catch (Exception e) { e.printStackTrace(); } } }.start(); } private void SendRequest(){ //通過HttpClient類與WEB服務器交互 HttpClient httpClient = new DefaultHttpClient(); //定義與服務器交互的地址 String ServerUrl = "http://www.bigbearking.com/study/guestRequest.php"; //設置讀取超時,注意CONNECTION_TIMEOUT和SO_TIMEOUT的區分 httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000); //設置讀取超時 httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000); //POST方式 HttpPost httpRequst = new HttpPost(ServerUrl); //準備傳輸的數據 List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>(); params.add(new BasicNameValuePair("CMDID", "1")); params.add(new BasicNameValuePair("CUserName", "lygk")); params.add(new BasicNameValuePair("COrderName", "Apple")); params.add(new BasicNameValuePair("COrderNum", "2")); try{ //發送要求 httpRequst.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); //得到響應 HttpResponse response = httpClient.execute(httpRequst); //返回值如果為200的話則證明成功的得到了數據 if(response.getStatusLine().getStatusCode() == 200) { StringBuilder builder = new StringBuilder(); //將得到的數據進行解析 BufferedReader buffer = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); //readLine()阻塞讀取 for(String s =buffer.readLine(); s!= null; s = buffer.readLine()) { builder.append(s); } System.out.println(builder.toString()); //得到Json對象 JSONObject jsonObject = new JSONObject(builder.toString()); //通過得到鍵值對的方式得到值 int CmdId = jsonObject.getInt("CMDID"); String SResult = jsonObject.getString("SResult"); String SUserName = jsonObject.getString("SUserName"); int SResultPara = jsonObject.getInt("SResultPara"); Log.i(TAG, "讀取到數據 "); Log.i(TAG, "RequestResult:"+SResult); Log.i(TAG, "UserName:"+SUserName); //在線程中判斷是不是得到成功從服務器得到數據 } else{ Log.e(TAG, "連接超時 "); } }catch (Exception e) { e.printStackTrace(); Log.e(TAG, "要求毛病 "); Log.e(TAG, e.getMessage()); } return ; } }


Web服務端源碼

guestRequest.php內容:

<?php //獲得客戶端發來的要求信息 $CmdId = $_POST['CMDID']; $UserName = $_POST['CUserName']; $OrderName = $_POST['COrderName']; if($UserName != 'lygk') { $result = 'Fail'; $resultpara = 2; //將數據存儲到數據中 $arr = array( 'CMDID' => $CmdId, 'SUserName' => $UserName, 'SResult'=>$result, 'SResultPara' =>$resultpara ); //將數組轉成json格式進行傳遞 $strr = json_encode($arr); } else { $result = 'Success'; $resultpara = 1; //將數據存儲到數據中 $arr = array( 'CMDID' => $CmdId, 'SUserName' => $UserName, 'SResult'=>$result, 'SResultPara' =>$resultpara ); //將數組轉成json格式進行傳遞 $strr = json_encode($arr); } echo($strr); ?>

    運行軟件,點擊“發送要求”按鈕后,從LogCat可以看到運行信息,WEB服務器已成功響應處理了Android客戶端發送的要求。


結尾

    本章主要介紹了Android客戶端與WEB服務真個交互,貼的源碼比較多,發現講的原理少,其中個中細節,請君自行品味查閱。Android客戶端源碼,點此下載

/*****************************************************************************************************

*原創文章,轉載請注明網址:http://blog.csdn.net/mybelief321/article/details/45423143

*魯陽高科工作室

*網       址:www.bigbearking.com

*商務合作QQ:1519190237

*業 務 范 圍:網站建設、桌面軟件開發、AndroidIOS開發、圖象影視后期處理、PCB設計

****************************************************************************************************/


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 丁香九月婷婷 | aaaaaa级特色特黄的毛片 | 天堂在线视频观看 | 国语精品91自产拍在线观看二区 | 欧美性88xx| 国产精品免费_区二区三区观看 | 欧美性猛交xxxx乱大交高清 | 国产一级做a爱片久久毛片a | 羞羞动漫在线免费观看 | 亚洲成av人片在线观看 | 99爱免费观看视频在线 | 一区二区三区网站 | 国内精品伊人久久久久 | 亚洲欧美日韩色 | 亚洲精品麻豆 | 成人a毛片一级 | 亚洲制服欧美自拍另类 | 日韩精品福利在线 | 欧美草逼网 | 国产三级在线观看视频 | 精品久久久久久 | 亚洲影视先锋 | 黄色a一级| 曰本一区| 欧美性猛交xxxx黑人 | 久久最新 | 色综合第一页 | 波多野结衣中文字幕在线播放 | 日韩欧美亚洲每日更新网 | 永久免费毛片在线播放 | 99久热成人精品视频 | 国产精品亚洲综合 | www.色.con| 德国艳星videos极品 | 国产成人精品综合久久久 | 性欧美bb | 成人区在线观看免费视频 | 老司机午夜精品 | 日本午夜视频在线 | 欧美在线看欧美视频免费网站 | 免费看国产精品久久久久 |