Android程式與伺服器互動(一)
在公司一個專案中用到了這樣一種網路請求方式,在此記錄學習。
1.java程式碼
/**
* 訪問網路改變座位號
*/
private void saveSeatNumber() {
Controller.getInstance(this).saveSeatNumber(
getIntent().getStringExtra("prescriptionGroupNum"),
seatNumberContent.getText().toString().trim(),
new HandlerMessage() {
@Override
public void handlerMessage(String result) {
if (result.equals("1")) {
} else if (result.equals("2")) {
Toast.makeText(InfusionSeatNumberActivity.this,
"儲存失敗" , Toast.LENGTH_LONG).show();
} else {
Toast.makeText(InfusionSeatNumberActivity.this,
"未知錯誤", Toast.LENGTH_LONG).show();
}
}
});
}
2.Controller.java
public class Controller {
private MySQLiteOpenHelper myOpenHelper;
private AsyncTask task;
private static Controller instance;
private static Context context;
public static Controller getInstance(Context c) {
if (instance == null) {
instance = new Controller();
}
context = c;
return instance;
}
public void cancelTask(boolean cancel) {
if (task != null) {
task.cancel(cancel);
}
}
/**
* 儲存座位號
*
* @param prescriptionGroupNum
* @param zw
*/
public void saveSeatNumber(final String prescriptionGroupNum,
final String zw, final HandlerMessage handlerMsg) {
AsyncTask<Object, Integer, String> asyncTask = new AsyncTask<Object, Integer, String>() {
ProgressDialog pd;
@Override
protected void onPreExecute() {
pd = new ProgressDialog(context,
ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage(context.getString(R.string.pleasewait));
pd.setCancelable(false);
pd.show();
}
@Override
protected String doInBackground(Object... objects) {
return ServerDataUtil.getInstance().saveSeatNumber(
prescriptionGroupNum, zw);
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
handlerMsg.handlerMessage(result);
}
pd.dismiss();
}
};
asyncTask.execute("");
}
}
3.ServerDataUtil.java
public class ServerDataUtil {
private final static int TIMEOUT = 30000;
public final static String CONEXCEPTION = "網路異常,請重新操作";
private HttpPost req;
private HttpResponse rep;
private static DefaultHttpClient client;
private List<NameValuePair> params;
private static ServerDataUtil fetcher;
public static ServerDataUtil getInstance() {
if (fetcher == null) {
fetcher = new ServerDataUtil();
}
if (client == null) {
BasicHttpParams params = new BasicHttpParams();
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
final SSLSocketFactory sslSocketFactory = SSLSocketFactory
.getSocketFactory();
schemeRegistry.register(new Scheme("https", sslSocketFactory, 443));
ClientConnectionManager cm = new ThreadSafeClientConnManager(
params, schemeRegistry);
client = new DefaultHttpClient(cm, params);
final HttpParams param = client.getParams();
HttpConnectionParams.setConnectionTimeout(param, TIMEOUT);
HttpConnectionParams.setSoTimeout(param, TIMEOUT);
ConnManagerParams.setTimeout(param, TIMEOUT);
}
return fetcher;
}
/**
* 儲存座位號
*
* @return
*/
public String saveSeatNumber(String prescriptionGroupNum, String zw) {
params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("prescriptionGroupNum",
prescriptionGroupNum));
params.add(new BasicNameValuePair("zw", zw));
try {
req = new HttpPost(ClientStrings.getBASE_URL()
+ ClientStrings.SAVE_SEAT_NUMBER);
HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
req.setHeader(entity.getContentType());
req.setEntity(entity);
rep = client.execute(req);
if (rep.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
return EntityUtils.toString(rep.getEntity());
}
} catch (Exception e) {
e.printStackTrace();
}
return Static.netexception;
}
4.HandlerMessage.java
/**
* 非同步返回值
*
* @author Administrator
*
*/
public interface HandlerMessage {
public void handlerMessage(String result);
}
相關推薦
Android程式與伺服器互動(一)
在公司一個專案中用到了這樣一種網路請求方式,在此記錄學習。 1.java程式碼 /** * 訪問網路改變座位號 */ private void saveSeatNumber() { Controller.g
Android 建立與解析XML(一)—— 概述
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android 建立與解析XML(一)---- SAX方式
@Override public String serialize(List<Book> books) throws Exception { SAXTransformerFactory factory = (SAXTransformerFactory) TransformerFactory
RN與原生互動(一)——基本頁面跳轉
React Native(以下簡稱RN)開發app過程中大部分都可以在JS端完成,但是也有一些功能是需要原生端來完成的。這時RN與原生端就不可避免的需要進行互動,比如頁面跳轉和資料傳遞。本篇文章主要以RN——原生、原生——RN——原生為例來講解如何進行基本的頁面跳轉操作。關於頁面跳轉,我寫了三個demo。這裡
Android與JS之間的互相呼叫互動(一)
Android裝置多解析度的問題Android瀏覽器預設預覽模式瀏覽 會縮小頁面 WebView中則會以原始大小顯示Android瀏覽器和WebView預設為mdpi。hdpi相當於mdpi的1.5倍 ldpi相當於0.75倍三種解決方式:1 viewport屬性 2 CS
總想自己動動手系列·1·本地和外網(Liunx伺服器上部署的web專案)按照自定義的報文格式進行互動(一)
一、準備工作 (1)有一臺屬於自己的雲伺服器,併成功部署和釋出一個web專案(當然,本質上來說Java-Project也沒問題),通過外網IP可以正常訪問該web專案。 需要說明的是:任何web專案,只要成功部署後在外網上能訪問到即可。本案例注重修改web對請求的監聽和過濾的處
伺服器安全性的執行與維護 理論(一)
提前檢查 伺服器和網站漏洞檢測,對Web漏洞、弱口令、潛在的惡意行為、違法資訊等進行定期掃描。程式碼的定期檢查,安全檢查,漏洞檢查。伺服器安全加固,安全基線設定,安全基線檢查。資料庫執行的命令,新增欄位、加索引等,必須是經過測試檢查的命令,才能在正式環境執行。 資料備份 伺服器資料備份,包括
Qt之與遊戲手柄的互動(一)
用途 通過手柄與Qt的通訊,傳送指令至遠端裝置,控制遠端裝置的運動。 手柄種類 市面上的遊戲手柄也有多種種類,主流的是藍芽手柄、2.4g手柄和usb手柄。2.4g手柄有的會識別出來是Xbox裝置,有的識
Android 創建與解析XML(一)—— 概述
四種 stream 大小 ora rda roc default 關系 建立 Android 是最常用的智能手機平臺,XML 是數據交換的標準媒介,Android 中可以使用標準的XML生成器、解析器、轉換器 API,對 XML 進行解析和轉換。 XML,相關有DOM
Android開發常見異常與錯誤系列(一)
一、前言 這系列文章是自己在平時開發過程中遇到的問題。之前只是記在雲筆記上面,現在整理一下,發出來共享。 ps:像那些什麼沒有註冊Activity呀,許可權呀等最基本的就不再贅述。 二、ADB連線異常 有時我們發現,即使自己從工作管理員裡面把adb.ex
Android Rom定製與修改學習(一)
最近ZUK慘遭聯想拋棄,從而使得ZUK系列全線大降價,於是將服役了三年的榮耀6換下了,入手ZUK2 PRO,機器在硬體方面都挺讓人滿意,只是聯想採用了一塊AMOLED屏,相比較於IPS而言,A屏顏色實在過於飽和,外加ZUK自帶ZUI也可能不再更新,於是便萌生了在
Android自定義View總結(一)基礎知識與例項
自定義View是最能體現一個Android開發者水平的技能之一了。 接下來的一些列部落格將總結一下Android的自定義相關View知識,包括View的結構,事件體系,工作原理,自定義View的繪製等。 參考資料部分來自於書上以及各種部落格。 新建了一個qq群 482
微信小程式填坑之路之springmvc與小程式的資料互動(json)
springmvc框架寫到現在終於牽扯到小程式了(所以別說我“不務正業”),對於一個應用程式來說,它的本質其實就是無數個對資料進行增刪改查的操作,這裡起到至關重要的就是資料,於是這篇帖子的目的就是實現小程式與後臺資料的互動。小程式使用的是wx.request的api來提交和接
Android-PickerView系列之介紹與使用篇(一)
宣告:本文為博主原創文章,轉載請註明出處:小嵩的部落格 一、介紹 Android-PickerView是一款仿iOS的PickerView控制元件,並封裝了時間選擇和選項選擇這兩種選擇器,詳細特性如下: WheelView —— 基礎控制元件
Native和html5的互動(一)h5傳資料or觸發一個Android的事件
實習的時候給了一個native 與htmlt5的互動的任務 那Android平臺來舉例 Activity.java裡面 WebView mWebView; @SuppressLint({ "JavascriptInterface", "SetJavaScriptEnab
用android studio建立第一個安卓程式載入html5頁面(一)
前言 軟體版本:android studio v1.0正式版,由於v0.x以來軟體變化一直比較大,很多問題搜尋的解決方案也都是v0.x版本時代的,故首先宣告一下版本。 動機:由於工作中需要對移動端軟體開發的幾種方式進行一下對比研究,故有了此文章的產生,估計後續還會有其他技
Android與js互動(四)自定義cordova外掛
首先昨天我做測試的時候js端一直無法呼叫寫在js的方法後來查了資料才知道是在index.html中使用js時 需要刪除這一行 <meta http-equiv="Content-Security-Policy" content="default-src 'self'
Android高階進階——繪圖篇(七)Canvas 與 圖層(一)
開篇 前面很多篇文章都用到了圖層的概念,但是一直沒有詳細介紹,今天這篇文章將詳細的介紹 Canvas 與 圖層的概念 一、如何獲得一個Canvas物件 方法一:自定義view時, 重寫onDraw、dispatchDraw方法 protect
Android百度地圖開發(一):地圖下載與配置
轉載請標明出處 弄了不久,也算是入門百度地圖的開發了,基本的實現並不難,接下來說下基本步驟: 1:註冊百度賬號並進入官網:http://lbsyun.baidu.com/index.php?title=androidsdk,按提示完成基本驗證就可進入如下頁
android studio建立第一個安卓程式載入html5頁面(一)
前言 軟體版本:android studio v1.0正式版,由於v0.x以來軟體變化一直比較大,很多問題搜尋的解決方案也都是v0.x版本時代的,故首先宣告一下版本。 動機:由於工作中需要對移動端軟體開發的幾種方式進行一下對比研究,故有了此文章的產生,估計後續還會有其他技