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


今天把登录注册写了一下,百度解决了两个问题:

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 stub
  LayoutInflater 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() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
    EditText 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() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
    EditText 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() {
   
   @Override
   public 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 stub
  SoapObject 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 stub
  SoapObject 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();
  }
 
 }
}

相关阅读:Android教程:在百度地图上画出轨迹

相关内容

    暂无相关文章