我不擅长C#,但还是贴段代码,lz看看有没有用处:
服务端的:
package com.login.webservice;import java.util.List;import org.apache.commons.mvc.annotation.Webservice;
import org.apache.commons.mvc.annotation.WebserviceMethod;
import org.apache.commons.mvc.entity.Json;
import org.apache.commons.mvc.util.ToolUtil;
import org.apache.log4j.Logger;import com.login.entity.CarMember;
import com.login.model.CarMemberModel;/**
* 用户接口
*
* @author TCK-001
* @version 1.0
*/
@Webservice(name = "carMemberWs")
public class CarMemberWs {
private static final Logger log = Logger.getLogger(CarMemberWs.class);
/**
* 用户登录
* @param name
* @param pwd
* @return
*/
@WebserviceMethod
public Json login(String name, String pwd) {
try {
CarMember member = new CarMemberModel().getByName(name);
if (null == member) {
return new Json(false, "找不到用户");
}
if (!ToolUtil.md5(ToolUtil.deUnicode(pwd)).equals(member.getPassword())) {
return new Json(false, "密码错误");
}
return new Json(true, Json.OPERATE_RIGHT_MESSAGE).addData("member", member);
} catch (Exception e) {
log.error("用户登录", e);
return new Json(false, e.getMessage());
}
}
/**
* 所有用户
* @return
*/
@WebserviceMethod
public List<CarMember> list() {
return new CarMemberModel().getBeans();
}}android端的:
/**
* 登录的方法
* @param view
*/
public void doLogin(View view) {
if (toolUtil.isBlank(txtName.getText().toString())) {
prompt(getString(R.string.userNameErr));
return;
}
if (toolUtil.isBlank(txtPwd.getText().toString())) {
prompt(getString(R.string.passwordErr));
return;
}
gress = ProgressDialog.show(this, getString(R.string.wait), getString(R.string.loadData), true);
gress.setCanceledOnTouchOutside(true);
new LoginThread().start();
}
// 提示操作
private void prompt(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
// 登录的线程
private class LoginThread extends Thread {
public void run() {
try {
// 准备参数
Object[] param = new Object[] { txtName.getText().toString(), toolUtil.toUnicode(txtPwd.getText().toString()) };
// 准备调用Webservice的客户端
WebserviceClient client = new WebserviceClient(wsUrl, "carMemberWs", "login", param, String.class, null);
// 调用Webservice,并把返回的数据解压再解密
response = toolUtil.gunzip((String) client.execute());
} catch (Exception e) {
Log.e(Constant.TAG_NAME, "登录的线程", e);
} finally {
loginHandler.sendMessage(new Message());
}
}
}
// 登录的Handler
private Handler loginHandler = new Handler() {
public void handleMessage(Message msg) {
try {
gress.dismiss();
if (!toolUtil.isBlank(response)) {
JSONObject json = new JSONObject(response);
if (json.getBoolean("success")) {
// 得到json中的用户对象
CarMember member = beanUtil.jsonToBean(json.getJSONObject("data").getJSONObject("member"), CarMember.class);
member.setPassword(txtPwd.getText().toString());
// 把账号密码序列化保存到文件中
fileUtil.serialize(rootPath + filePath, member);
response = null;
prompt("OK");
} else {
prompt(json.getString("message"));
}
} else {
prompt(getString(R.string.fail));
}
} catch (Exception e) {
prompt(e.getMessage());
}
}
};
服务端的:
package com.login.webservice;import java.util.List;import org.apache.commons.mvc.annotation.Webservice;
import org.apache.commons.mvc.annotation.WebserviceMethod;
import org.apache.commons.mvc.entity.Json;
import org.apache.commons.mvc.util.ToolUtil;
import org.apache.log4j.Logger;import com.login.entity.CarMember;
import com.login.model.CarMemberModel;/**
* 用户接口
*
* @author TCK-001
* @version 1.0
*/
@Webservice(name = "carMemberWs")
public class CarMemberWs {
private static final Logger log = Logger.getLogger(CarMemberWs.class);
/**
* 用户登录
* @param name
* @param pwd
* @return
*/
@WebserviceMethod
public Json login(String name, String pwd) {
try {
CarMember member = new CarMemberModel().getByName(name);
if (null == member) {
return new Json(false, "找不到用户");
}
if (!ToolUtil.md5(ToolUtil.deUnicode(pwd)).equals(member.getPassword())) {
return new Json(false, "密码错误");
}
return new Json(true, Json.OPERATE_RIGHT_MESSAGE).addData("member", member);
} catch (Exception e) {
log.error("用户登录", e);
return new Json(false, e.getMessage());
}
}
/**
* 所有用户
* @return
*/
@WebserviceMethod
public List<CarMember> list() {
return new CarMemberModel().getBeans();
}}android端的:
/**
* 登录的方法
* @param view
*/
public void doLogin(View view) {
if (toolUtil.isBlank(txtName.getText().toString())) {
prompt(getString(R.string.userNameErr));
return;
}
if (toolUtil.isBlank(txtPwd.getText().toString())) {
prompt(getString(R.string.passwordErr));
return;
}
gress = ProgressDialog.show(this, getString(R.string.wait), getString(R.string.loadData), true);
gress.setCanceledOnTouchOutside(true);
new LoginThread().start();
}
// 提示操作
private void prompt(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
// 登录的线程
private class LoginThread extends Thread {
public void run() {
try {
// 准备参数
Object[] param = new Object[] { txtName.getText().toString(), toolUtil.toUnicode(txtPwd.getText().toString()) };
// 准备调用Webservice的客户端
WebserviceClient client = new WebserviceClient(wsUrl, "carMemberWs", "login", param, String.class, null);
// 调用Webservice,并把返回的数据解压再解密
response = toolUtil.gunzip((String) client.execute());
} catch (Exception e) {
Log.e(Constant.TAG_NAME, "登录的线程", e);
} finally {
loginHandler.sendMessage(new Message());
}
}
}
// 登录的Handler
private Handler loginHandler = new Handler() {
public void handleMessage(Message msg) {
try {
gress.dismiss();
if (!toolUtil.isBlank(response)) {
JSONObject json = new JSONObject(response);
if (json.getBoolean("success")) {
// 得到json中的用户对象
CarMember member = beanUtil.jsonToBean(json.getJSONObject("data").getJSONObject("member"), CarMember.class);
member.setPassword(txtPwd.getText().toString());
// 把账号密码序列化保存到文件中
fileUtil.serialize(rootPath + filePath, member);
response = null;
prompt("OK");
} else {
prompt(json.getString("message"));
}
} else {
prompt(getString(R.string.fail));
}
} catch (Exception e) {
prompt(e.getMessage());
}
}
};
解决方案 »
- android系统UI的改变
- 使用TranslateAnimation播放动画时留下痕迹如何解决
- 关于android中ListView使用的问题
- 下拉状态栏的日期怎么与设置的选择日期格式同步
- 急 !!!关于ListView控件显示图片的问题
- Android 有关Density(浓度)的问题 殷切等待大虾解决
- 手机支付宝客户端支付功能退款
- 人生路上遇到的纠结问题,戳进来看看,帮我分析下吧。谢谢各位了
- 安卓开发不能从values/strings.xml读取信息
- 求助 Android Studio 问题
- 如何使用Chronometer在时间暂停后,点击按钮重新继续计时?求救啊!!!!!!!!!!
- Android怎么一开始就调用JS中的方法
如果不熟悉从子线程到UI的通信,可以百度下 AsyncTask 的用法,里面有个在UI线程执行的回调接口,方便点。