一套非常标准的数据请求和数据展示代码的模板

package com.anzi.jmsht.ui;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.json.JSONObject;

import com.anzi.jmsht.AppException;
import com.anzi.jmsht.AppManager;
import com.anzi.jmsht.Constant;
import com.anzi.jmsht.net.xml.api.Net;
import com.anzi.jmsht.ui.R;
import com.anzi.jmsht.util.Constants;
import com.anzi.jmsht.util.DataCheckout;
import com.anzi.jmsht.util.PreferencesHelper;
import com.anzi.jmsht.view.ExtDialog;
import com.anzi.jmsht.widget.AppStartBgService;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

/**
 * 登录
 *
 * @author hhh
 *
 */
public class LoginActivity extends Activity implements OnClickListener {

	private Button regist, login;
	private EditText userN_et, pw_et;
	private TextView forgetPw;
	private ExecutorService fixedThreadPool;
	private ArrayList<Map<String, Object>> list;// 存放登录信息
	private ProgressDialog dialog;
	private PreferencesHelper ph;
	private ExtDialog extDialog;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		getWindow().requestFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.login_activity_layout);
		// 注册默认的未捕捉异常处理类
		Thread.setDefaultUncaughtExceptionHandler(AppException
				.getAppExceptionHandler());
		AppManager.getAppManager().addActivity(this);
		// 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待:
		fixedThreadPool = Executors.newFixedThreadPool(1);
		ph = new PreferencesHelper(this, Constants.ANZIDate);
		try {
			update();
			initView();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		if (fixedThreadPool != null) {
			fixedThreadPool.shutdown();
		}
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();

	}

	private void update() {
	        String url = ph.getValue("URL");
		String note = ph.getValue("NOTE");
		String size = ph.getValue("SIZE");
		String type = ph.getValue("TYPE");
		String version = ph.getValue("version");
		// Toast.makeText(getApplicationContext(), url+note+size+"这里__"+label,
		// 0).show();
		if ("1".equals(type)) {
			extDialog = new ExtDialog(this, "文件大小:" + size, note, url, type,
					version);
			extDialog.setCancelable(false);
			extDialog.show();
			// Intent intent = new Intent(this,UpdateService.class);
			// intent.putExtra("Key_App_Name", "摇乾树");
			// intent.putExtra("Key_Down_Url",url);
			// this.startService(intent);
		} else if ("0".equals(type)) {
			extDialog = new ExtDialog(this, "文件大小:" + size, note, url, type,
					version);
			extDialog.show();
		}

		 }
	}

	/*
	 * 初始化控件
	 */
	private void initView() {

		SharedPreferences preference = getSharedPreferences("person",
				Context.MODE_PRIVATE);
		regist = (Button) findViewById(R.id.regist);
		regist.setOnClickListener(this);
		login = (Button) findViewById(R.id.login);
		login.setOnClickListener(this);
		userN_et = (EditText) findViewById(R.id.userN_et);
		// userN_et.setText(preference.getString("phoneNumber",""));
		pw_et = (EditText) findViewById(R.id.pw_et);
		// pw_et.setText(preference.getString("password",""));
		forgetPw = (TextView) findViewById(R.id.forgetPw);
		forgetPw.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.regist:// 注册
			((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
					.hideSoftInputFromWindow(LoginActivity.this
							.getCurrentFocus().getWindowToken(),
							InputMethodManager.HIDE_NOT_ALWAYS);
			startActivity(new Intent(getApplicationContext(),
					RegistActivity.class));
			break;
		case R.id.login:// 登录
			((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
					.hideSoftInputFromWindow(LoginActivity.this
							.getCurrentFocus().getWindowToken(),
							InputMethodManager.HIDE_NOT_ALWAYS);
			list = new ArrayList<Map<String, Object>>();
			// startActivity(new Intent(getApplicationContext(),
			// HomeTabActivity.class));
			// AppManager.getAppManager().finishActivity();
			String phoneNumber = userN_et.getText().toString();
			String password = pw_et.getText().toString();
			if (TextUtils.isEmpty(phoneNumber)) {
				Toast.makeText(this, "请输入手机号码", Toast.LENGTH_SHORT).show();
			} else if (TextUtils.isEmpty(password)) {
				Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();
			} else {
				// 登录请求
				loginReq(phoneNumber, password);
			}
			break;
		case R.id.forgetPw:// 忘记密码
			// 输入法消失
			((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
					.hideSoftInputFromWindow(LoginActivity.this
							.getCurrentFocus().getWindowToken(),
							InputMethodManager.HIDE_NOT_ALWAYS);
			startActivity(new Intent(getApplicationContext(),
					ResetPwdActivity.class));

			break;
		default:
			break;
		}
	}

	/*
	 * 处理登陆请求
	 */
	private void loginReq(final String phoneNumber, final String password) {

		// 获得工作线程发来的消息
		final Handler handler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				String s = (String) msg.obj;
				if ("ok".equals(s)) {
					// 显示内容
					// 获得状态码
					String status = (String) list.get(0).get("status");
					// 获得登录信息
					String message = (String) list.get(0).get("message");
					if ("10000".equals(status)) {// 登录成功
						// 保存验签值
						Constant.sigen = (String) list.get(0).get("sigen");
						// 账户名
						Constant.phone = userN_et.getText().toString();
						// 用户id
						Constant.userId = (String) list.get(0).get("userid");
						// 用户积分
						Constant.integral = (String) list.get(0)
								.get("integral");
						// 用户头像地址
						Constant.portrait = (String) list.get(0)
								.get("portrait");
						// 保存用户名和密码到 SharedPreferences
						SharedPreferences preference = getSharedPreferences(
								"person", Context.MODE_PRIVATE);
						Editor edit = preference.edit();
						edit.putString("phoneNumber", phoneNumber);
						edit.putString("password", password);
						edit.commit();
						startActivity(new Intent(getApplicationContext(),
								HomeTabActivity.class));
						AppManager.getAppManager().finishActivity();
						ph.setValue("sigen", Constant.sigen);
						ph.setValue(phoneNumber, Constant.sigen);
						ph.setValue("phoneNumber", "" + phoneNumber);
						ph.setValue("password", "" + password);
						ph.setValue("uid", "" + Constant.userId);
						ph.setValue("portrait", "" + Constant.portrait);
						ph.setValue("integral", "" + Constant.integral);
						Toast.makeText(LoginActivity.this, "登录成功", 1).show();
					} else if ("10001".equals(status)) {// 用户名或密码错误
						Toast.makeText(LoginActivity.this, message, 1).show();
					} else if ("10005".equals(status)) {// 系统问题
						Toast.makeText(LoginActivity.this, message, 1).show();
					}

					dialog.dismiss();
				} else if ("no".equals(s)) {// 网路问题
					dialog.dismiss();
					Toast.makeText(LoginActivity.this, "网络问题", 1).show();
				}
			}
		};
		dialog = ProgressDialog.show(this, null, "正在登录……请稍后", true, true);
		dialog.setCancelable(false);
		fixedThreadPool.execute(new Runnable() {
			@Override
			public void run() {
				HashMap<String, Object> map = null;
				try {
					String result = Net.login(Constant.login_url, "phone",
							phoneNumber, "password", password);
					// Log.i("返回", result);
					// 解析json字符串
					result = result.substring(1, result.length() - 1);
					Log.i("登录结果", result);
					JSONObject jsonObject = new JSONObject(result);
					map = new HashMap<String, Object>();
					// Log.i("结果", jsonObject.get("message")+"");
					// 登录结果信息
					map.put("message", jsonObject.getString("message"));
					// 状态码
					map.put("status", jsonObject.getString("status"));
					// 如果用户登录成功则将标识码和用户id存起来
					if ("10000".equals(jsonObject.getString("status"))) {
						// 保存用户头像
						Constant.userIc = Net.getBitmap(jsonObject
								.getString("portrait"));
						// 用户标识码
						map.put("sigen", jsonObject.getString("sigen"));
						// 上传头像用的key
						map.put("key", jsonObject.getString("key"));
						// 用户id
						map.put("userid", jsonObject.getString("userid"));
						// 总积分
						map.put("integral", jsonObject.getString("integral"));
						// 用户头像
						map.put("portrait", jsonObject.getString("portrait"));
					}
					list.add(map);
					// 通知UI
					Message msg = new Message();
					msg.obj = "ok";
					handler.sendMessage(msg);
				} catch (Exception e) {
					e.printStackTrace();
					// 通知UI
					Message msg = new Message();
					msg.obj = "no";
					handler.sendMessage(msg);
				}
			}
		});
	}
}
时间: 2024-10-06 05:40:23

一套非常标准的数据请求和数据展示代码的模板的相关文章

api接口中ajax数据请求与数据返回的小坑

AJAX 可以使网页实现异步更新,XMLHttpRequest 是 AJAX 的基础,大部分浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject),XMLHttpRequest对象基于HTTP协议用于在后台与服务器交换数据.HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,这里主要说 POST 提交数据

Ajax --- 数据请求

下面主要介绍(JS原生)数据请求的主要步骤: Ajax 数据请求步骤: 1.创建XMLHttpRequest对象 2.准备数据发送 3.执行发送 4.指定回掉函数 第一步:创建XMLHttpRequest对象 1 var xhr = new XMLHttpRequest(); // 标准浏览器 2 3 var xhr = new ActiveXObject('Microsoft.XMLHTTP'); // IE6 第二步:使用 open() 方法将参数传入 1 xhr.open('get','.

XML 数据请求与JSON 数据请求

(1)XML 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 和 AFXMLParserResponseSerializer,另外结合第三方框架 XMLDictionary 进行数据转换 使用 XMLDictionary 的好处:有效避免自行实现 NSXMLParserDelegate 委托代理协议方法来进行繁琐的数据拼凑解析 (2)JSON 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 或 AFHTT

微信小程序数据请求方法wx.request小测试

微信小程序数据请求方法 wx.request wxml文件: <view> <textarea value="{{textdata}}"/> </view> <button bindtap="RequestData" value="Button">Button</button> 主要是一个按钮,点击后将请求的数据写入到textarea中 js文件: Page({ data:{ textd

EasyUI queryParams属性 在请求远程数据同时给action方法传参

http://www.cnblogs.com/iack/p/3530500.html?utm_source=tuicool EasyUI queryParams属性 在请求远程数据同时给action方法传参 属性名 属性值类型 描述 默认值 queryParams object 在请求远程数据的时候发送额外的参数. 代码示例: $('#dg').datagrid({ queryParams: { name: 'easyui', subject: 'datagrid' } }); {} Actio

iOS开发——网络编程OC篇&amp;数据请求总结

数据请求总结 1 //**************************************GET 2 //同步 3 /* 4 //第一步,创建URL 5 NSURL * url = [[NSURL alloc]initWithString:@"http://e.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=66f9b9980ef431adbcd2473a7d0097cc/08f790529822720

向后端请求数据 以及像后端发送数据要求(删除数据和添加数据)

删除数据和添加数据只能后端操作 删除数据和添加数据都要用到的html(一)部分 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="../css/bootstrap.min.css"

对标准的输入的读取数据进行压缩,然后将其写到标准的输出

//对标准的输入的读取数据进行压缩,然后将其写到标准的输出 package com; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.compress.CompressionCodec; import org.apache.hadoop.io.compress.CompressionOutputStream; import o

AJAX跨域请求json数据的实现方法

这篇文章介绍了AJAX跨域请求json数据的实现方法,有需要的朋友可以参考一下 我们都知道,AJAX的一大限制是不允许跨域请求. 不过通过使用JSONP来实现.JSONP是一种通过脚本标记注入的方式,它是可以引用跨域URL的js脚本,不过需要提供一个回调函数(必须在您自己的页面上),因此,你可以自己处理结果. 让我们看看JSONP的是怎么在jQuery,MooTools的,Dojo Toolkit中实现的. jQuery的JSONPjQuery.getJSON方法:Js代码 jQuery.get