AndroidNote012.Android访问webservice.客户端登录注册

来源:互联网 发布:8月份上海房产成交数据 编辑:程序博客网 时间:2024/05/01 03:27

今天把登录注册写了一下,百度解决了两个问题:
1.模拟器输入中文,就长按然后选择谷歌输入法就好
2.得到自定义的Dialog上的组件信息,主要要通过view获得,不能直接就用findviewbyid
之前的saveUser 和 findUserByName也简单的封装成了函数
界面如下,一切从简单处理
后台打印处理结果

关于这个对话框,处理逻辑比较麻烦。使用SharedPreferences保存一个变量来控制对话框的出现。第一次登陆
的时候要出现,登录成功后,下次一次就不用弹出了,如果出现错误,这个对话框还要出现。



代码

package seu.xin.webservice;import java.io.IOException;import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;import org.xmlpull.v1.XmlPullParserException;import seu.xin.entity.UserInfo;import com.google.gson.Gson;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class WebserviceActivity extends Activity {    /** Called when the activity is first created. */private static final String NAMESPACE = "http://10.6.11.20/";private static String URL = "http://10.6.11.20:8080/webservicedemo/services/webservice";private static final String SAVE_METHOD_NAME = "save";private static final String FIND_METHOD_NAME = "findUserByName";    private static String SOAP_ACTION = "http://10.6.11.20:8080/webservicedemo/services/";    AlertDialog loginRegDialog ;    SharedPreferences sp  ;        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        sp = this.getSharedPreferences("data",MODE_WORLD_READABLE);        boolean isFirst = sp.getBoolean("first", true);        if(isFirst){        showloginRegDialog();        return;        }else{        System.out.println("isFirst-------->"+isFirst);        }           }    public void showloginRegDialog() {// TODO Auto-generated method stubLayoutInflater factory = LayoutInflater.from(WebserviceActivity.this);final View loginRegView = factory.inflate(R.layout.login, null); AlertDialog.Builder builder = new AlertDialog.Builder(WebserviceActivity.this); builder.setIcon(R.drawable.dialog_login).setTitle("Welcome to our app").setView(loginRegView).setPositiveButton("登陆", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubEditText etName = (EditText)loginRegView.findViewById(R.id.login_name);EditText etPassword= (EditText) loginRegView.findViewById(R.id.login_password);String name = etName.getText().toString();String password = etPassword.getText().toString();System.out.println("login name"+name+"password"+password);UserInfo loginUser = new UserInfo();loginUser = findUserByName(name);if(name.equals("") || password.equals("")){Toast.makeText(WebserviceActivity.this, "请输入用户名和密码", Toast.LENGTH_LONG).show();System.out.println("请输入用户名和密码");showloginRegDialog();}else if(loginUser == null){Toast.makeText(WebserviceActivity.this, "不存在此用户", Toast.LENGTH_LONG).show();System.out.println("不存在此用户");showloginRegDialog();}else if(password.equals(loginUser.getPassword())){Toast.makeText(WebserviceActivity.this, "登陆成功", Toast.LENGTH_LONG).show();System.out.println("登陆成功");Editor editor = sp.edit();editor.putString("name", name);editor.putString("password", password);editor.putBoolean("first", false);editor.commit();}else{Toast.makeText(WebserviceActivity.this, "密码错误", Toast.LENGTH_LONG).show();System.out.println("密码错误");showloginRegDialog();}}}).setNeutralButton("注册",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubEditText etName = (EditText)loginRegView.findViewById(R.id.login_name);EditText etPassword= (EditText) loginRegView.findViewById(R.id.login_password);String name = etName.getText().toString();String password = etPassword.getText().toString();System.out.println("register name"+name+"password"+password);UserInfo existUser = new UserInfo();existUser = findUserByName(name);UserInfo registerUser = new UserInfo();registerUser.setName(name);registerUser.setPassword(password);if(name.equals("") || password.equals("")){Toast.makeText(WebserviceActivity.this, "请输入用户名和密码", Toast.LENGTH_LONG).show();System.out.println("请输入用户名和密码");showloginRegDialog();}else if(existUser != null){Toast.makeText(WebserviceActivity.this, "该用户已注册,请换个名字注册", Toast.LENGTH_LONG).show();System.out.println("该用户已注册,请换个名字注册");showloginRegDialog();}else if((registerUser!=null) &&(existUser==null)) {saveUser(name,password);Toast.makeText(WebserviceActivity.this, "注册成功,请登录", Toast.LENGTH_LONG).show();System.out.println("注册成功,请登录");showloginRegDialog();}}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});  loginRegDialog = builder.create(); loginRegDialog.show();}public UserInfo findUserByName(String name) {// TODO Auto-generated method stubSoapObject soapObject = new SoapObject(NAMESPACE, FIND_METHOD_NAME);soapObject.addProperty("name", name);SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);// 版本envelope.bodyOut = soapObject ;envelope.dotNet = false ;envelope.setOutputSoapObject(soapObject) ;HttpTransportSE trans = new HttpTransportSE(URL) ;trans.debug = true ;// 使用调试功能try {trans.call(SOAP_ACTION, envelope) ;} catch (IOException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();}SoapObject result = (SoapObject) envelope.bodyIn;    Gson gson = new Gson();    String json = result.getProperty(0).toString();    UserInfo userInfo = new UserInfo();    userInfo = gson.fromJson(json, UserInfo.class);System.out.println("Web Service返回的数据是:"+result.getProperty(0));System.out.println("Web Service返回的userInfo"+userInfo);return userInfo;}public void saveUser(String name,String password) {// TODO Auto-generated method stubSoapObject soapObject = new SoapObject(NAMESPACE, SAVE_METHOD_NAME);soapObject.addProperty("name", name);soapObject.addProperty("password", password);SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);// 版本envelope.bodyOut = soapObject ;envelope.dotNet = false ;envelope.setOutputSoapObject(soapObject) ;HttpTransportSE trans = new HttpTransportSE(URL) ;trans.debug = true ;// 使用调试功能try {trans.call(SOAP_ACTION, envelope) ;} catch (IOException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();}}}




原创粉丝点击