Android访问webservice.客户端登录注册
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教程:在百度地图上画出轨迹
评论暂时关闭