原由:在android使用get請求獲取驗證碼時須要重開一個線程,這就形成了我沒法獲取到從服務器後臺返回的數據android
解決方法:建立全局變量,將返回的數據解析後返回給handler,再在handler中將數據賦值給全局變量服務器
部分代碼以下:app
private void getYzm(int money) { // TODO Auto-generated method stub String res = ""; Date nowTime = new Date(); SimpleDateFormat time = new SimpleDateFormat("yyMMddHHmm"); String tel = PhoneUtils.getPhoneNumber(context); final String paramData = "imsi=" + imsi + "&imei=" + imei + "&tel=" + tel + "&money=" + money + "&app=" + app+ "&time=" + time.format(nowTime); String resultCode; new Thread(){ public void run() { final String gainCode = HttpRequest.sendGet(url, paramData); // url是請求驗證碼地址,是一個全局變量,這裏沒有列出來,paramData是請求參數,HttpRequest是一個工具類,下面發連接 String resultCode; JSONObject dataJson; String orderid; try { dataJson = new JSONObject(gainCode); resultCode = dataJson.getString("resultCode"); orderid=dataJson.getString("orderid"); if("200000".equals(resultCode)){ msg = handler.obtainMessage(); Bundle bundle = new Bundle(); bundle.putString("orderid", orderid);// 將服務器返回的訂單號傳到Bundle中,,再經過handler傳出 msg.setData(bundle); msg.arg1 = 0; // 0爲獲取驗證碼成功 handler.sendMessage(msg); }else{ msg = handler.obtainMessage(); msg.arg1 = 1; // -1爲獲取驗證碼失敗 handler.sendMessage(msg); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start(); } class MsgHandler extends Handler { private Activity activity; public MsgHandler(Activity activity){ this.activity=activity; } @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub switch (msg.arg1) { case 0: dialog.show(); Bundle bundle=msg.getData(); orderid=bundle.getString("orderid");// 這裏的orderid是一個全局變量 break; case 1: showInfo("獲取驗證碼失敗!"); break; case 2: showInfo("訂購成功!"); break; case 3: showInfo("提交驗證碼錯誤,請從新測試!"); break; default: break; } super.handleMessage(msg); }