zoukankan      html  css  js  c++  java
  • Android调用WebService登录接口

    package jklc.gzznprojectjklc;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Locale;
    
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.MarshalBase64;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.AndroidHttpTransport;
    
    import android.net.ConnectivityManager;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.content.ContentValues;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.content.pm.PackageManager.NameNotFoundException;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.util.DisplayMetrics;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.Window;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class LoginActivity extends Activity {
        public static SqliteDBHelper helper;
        public EditText txtUserName;
        public EditText txtUserPwd;
        public TextView txtIMSI, txtVersion;
        public Button btnLogin, btnRegister;
        public SQLiteDatabase db;
        public String userName;
        public static boolean flag = false;
        public ProgressDialog pd;
        public HashMap<String, Object> hashmap;
        public static ArrayList<HashMap<String, Object>> arrayList;
        public String _DepartId = "";
        public String _UserId = "";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.login);
            txtUserName = (EditText) findViewById(R.id.txtUserName);
            txtUserPwd = (EditText) findViewById(R.id.txtUserPwd);
            txtIMSI = (TextView) findViewById(R.id.txtIMSI);
            txtVersion = (TextView) findViewById(R.id.txtVersionInfo);
            btnRegister = (Button) findViewById(R.id.btnZhuce);
            btnRegister.setOnClickListener(listenerZhuce);
            txtUserName.setText("");
            txtUserPwd.setText("");
            txtVersion.setText("最新版本:" + _getVersionInfo());
            txtUserName.requestFocus();
            txtUserName.setCursorVisible(true);
    
            btnLogin = (Button) findViewById(R.id.btnLogin);
            btnLogin.setOnClickListener(listenerLogin);
            PhoneInfo info = new PhoneInfo(LoginActivity.this);
            String IMEI = info.getPhoneInfo();
            txtIMSI.setText(IMEI);
            ConfigureModel model = _GetConfigure();
            if (model.displayflag == null) {
    
            } else {
                btnRegister.setVisibility(View.GONE);
                if (isOpenNetWork()) {
                    _GetVersionInfo();
                }
            }
            DisplayMetrics displayMetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
            Constant.displayWidth = displayMetrics.widthPixels;
            Constant.displayHeight = displayMetrics.heightPixels;
        }
    
        OnClickListener listenerZhuce = new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent();
                it.setClass(LoginActivity.this, ConfigureActivity.class);
                startActivity(it);
            }
        };
    
        public void _GetVersionInfo() {
            try {
                UpdateAppManager mUpdateManager = new UpdateAppManager(
                        LoginActivity.this);
                mUpdateManager.checkUpdate();
            } catch (Exception e) {
                ErrorMessageInfo._GetErrorMessage("LoginActivity", e.toString(),
                        getApplicationContext());
            }
        }
    
        public String _getVersionInfo() {
            PackageInfo info = null;
            PackageManager pm;
            pm = this.getPackageManager();
            try {
                info = pm.getPackageInfo(this.getPackageName(), 0);
            } catch (NameNotFoundException e) {
                ErrorMessageInfo._GetErrorMessage("LoginActivity", e.toString(),
                        getApplicationContext());
            }
            String version = info.versionName;
            return version;
        }
    
        OnClickListener listenerLogin = new OnClickListener() {
            @Override
            public void onClick(View v) {
    
                pd = ProgressDialog.show(LoginActivity.this, "提示", "正在登陆中...",
                        true, false);
                new Thread() {
                    @Override
                    public void run() {
                        LoginActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                _GetLogin();
                                handler.sendEmptyMessage(0);
                            }
                        });
                    }
                }.start();
            }
        };
    
        @SuppressWarnings("static-access")
        public void _GetLogin() {
            ConfigureModel model = _GetConfigure();
            String ip = model.ipAddress;
            String port = model.port;
            if (ip == null || port == null) {
                ShowDialog("请注册服务器IP和端口号");
                return;
            }
            String url = "http://" + ip + ":" + port
                    + "/WebServers/WLogincheck.asmx";
            String nameSpace = "http://tempuri.org/";
            String SOAP_ACTION = "http://tempuri.org/Authentication";
            String method = "Authentication";
            PhoneInfo info = new PhoneInfo(LoginActivity.this);
            String _LoginUserName = txtUserName.getText().toString();
            String userPwd = txtUserPwd.getText().toString();
            String IMEI = info.getPhoneInfo();
            SoapObject request = new SoapObject(nameSpace, method);
            request.addProperty("username", _LoginUserName);
            request.addProperty("pwd", userPwd);
            request.addProperty("IMEI", IMEI);
            AndroidHttpTransport transport = new AndroidHttpTransport(url);
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);
            envelope.bodyOut = request;
            (new MarshalBase64()).register(envelope);
            envelope.dotNet = true;
            try {
                if (isOpenNetWork()) {
                    transport.call(SOAP_ACTION, envelope);
                    if (envelope.getResponse() != null) {
                        if (_LoginUserName.equals("") || userPwd.equals("")) {
                            ShowDialog("用户名或者密码不能为空");
                        } else {
                            Object object = envelope.getResponse();
                            String str = object.toString();
                            String[] RealValue = null;
                            RealValue = str.split(",");
                            String result = RealValue[0].toString();
                            String message = RealValue[1].toString();
                            if (result.equals("failures")) {
                                ShowDialog(message);
                            } else {
                                MeasurationActivity.userId = RealValue[1]
                                        .toString();
                                HeadDownActivity.userid = RealValue[1].toString();
                                GroundDownActivity.userId = RealValue[1].toString();
                                SurroundingActivity.userId = RealValue[1]
                                        .toString();
                                MeasurationActivity.departId = RealValue[5]
                                        .toString();
                                WorningListActivity.userId = RealValue[1]
                                        .toString();
                                WorningListActivity.departId = RealValue[5]
                                        .toString();
                                WaringCountActivity.userId = RealValue[1]
                                        .toString();
                                SurroundingActivity.departID = RealValue[5]
                                        .toString();
                                HeadDownActivity.departId = RealValue[5].toString();
                                WarningToday.userId = RealValue[1].toString();
                                WarningToday.departId = RealValue[5].toString();
                                GroundDownActivity.departId = RealValue[5]
                                        .toString();
                                FunctionListActivity.userId = RealValue[1]
                                        .toString();
                                _DepartId = RealValue[5].toString();
                                _UserId = RealValue[1].toString();
                                ContentValues values = new ContentValues();
                                SimpleDateFormat fort = new SimpleDateFormat(
                                        "yyyy-MM-dd HH:mm:ss", Locale.getDefault());
                                Date curDate = new Date(System.currentTimeMillis());
                                String time = fort.format(curDate);
                                values.put("UserName", _LoginUserName);
                                values.put("UserPwd", userPwd);
                                values.put("PhoneIMEI", IMEI);
                                values.put("DateTime", time);
                                helper = new SqliteDBHelper(getApplicationContext());
                                db = helper.getReadableDatabase();
                                Cursor c = db.rawQuery("select * from Users", null);
                                if (c.getCount() == 0) {
                                    helper.Insert(values, helper.User_Table);
                                }
                                _InsertUserLoginLog();
                                _SendLoginLog();
                                Intent intent = new Intent();
                                intent.setClass(LoginActivity.this,
                                        FunctionListActivity.class);
                                startActivity(intent);
                                LoginActivity.this.finish();
                                txtUserName.setText("");
                                txtUserPwd.setText("");
                                Toast.makeText(getApplicationContext(), "登录成功",
                                        Toast.LENGTH_SHORT).show();
                            }
                        }
                    }
                } else {
                    try {
                        if (_LoginUserName.equals("") || userPwd.equals("")) {
                            ShowDialog("请输入用户名或者密码");
                        } else {
                            if (IsLogin(_LoginUserName, userPwd)) {
                                _InsertUserLoginLog();
                                Toast.makeText(getApplicationContext(), "本地登录成功",
                                        Toast.LENGTH_SHORT).show();
                                Intent intent = new Intent();
                                intent.setClass(LoginActivity.this,
                                        FunctionListActivity.class);
                                startActivity(intent);
                                txtUserName.setText("");
                                txtUserPwd.setText("");
                            } else {
                                ShowDialog("用户没有找到,请注意大小写。");
                            }
                        }
                    } catch (Exception e) {
                        ErrorMessageInfo._GetErrorMessage("LoginActivity",
                                e.toString(), getApplicationContext());
                    }
                }
            } catch (Exception e) {
                ErrorMessageInfo._GetErrorMessage("LoginActivity", e.toString(),
                        getApplicationContext());
                Toast.makeText(getApplicationContext(), "网络或者服务器断开不能登录",
                        Toast.LENGTH_SHORT).show();
            }
        }
    
        public boolean IsLogin(String Name, String Pwd) {
            try {
                helper = new SqliteDBHelper(this);
                db = helper.getReadableDatabase();
                Cursor c = db.rawQuery(
                        "select * from Users where UserName=? and UserPwd=?",
                        new String[] { Name.toString(), Pwd.toString() });
                if (c.getCount() > 0) {
                    c.close();
                    return true;
                }
                return false;
            } catch (Exception e) {
                ErrorMessageInfo._GetErrorMessage("LoginActivity", e.toString(),
                        getApplicationContext());
            }
            return false;
        }
    
        private Handler handler = new Handler() {
    
            @Override
            public void handleMessage(Message msg) {
                pd.dismiss();
            }
        };
    
        private void ShowDialog(String message) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("提示");
            builder.setMessage(message);
            builder.setPositiveButton("确定", null);
            builder.create().show();
        }
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                AlertDialog isExit = new AlertDialog.Builder(this).create();
                isExit.setTitle("提示");
                isExit.setMessage("确定要退出系统吗?");
                isExit.setButton("确定", listener);
                isExit.setButton2("取消", listener);
                isExit.show();
            }
            return false;
        }
    
        DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                switch (which) {
                case AlertDialog.BUTTON_POSITIVE:
                    _GetClose();
                    break;
                case AlertDialog.BUTTON_NEGATIVE:
                    break;
                default:
                    break;
                }
            }
        };
    
        public void _GetClose() {
            try {
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_HOME);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
                android.os.Process.killProcess(android.os.Process.myPid());
            } catch (Exception e) {
                ErrorMessageInfo._GetErrorMessage("LoginActivity", e.toString(),
                        getApplicationContext());
            }
        }
    
        public ConfigureModel _GetConfigure() {
            ConfigureModel model = new ConfigureModel();
            try {
                helper = new SqliteDBHelper(getApplicationContext());
                db = helper.getReadableDatabase();
                Cursor c = db.rawQuery("select * from Server", null);
                while (c.moveToNext()) {
                    model.id = c.getString(0);
                    model.ipAddress = c.getString(1);
                    model.port = c.getString(2);
                    model.displayflag = c.getString(3);
                }
            } catch (Exception e) {
                ErrorMessageInfo._GetErrorMessage("LoginActivity", e.toString(),
                        getApplicationContext());
            }
            return model;
        }
    
        @SuppressWarnings("static-access")
        public void _InsertUserLoginLog() {
            try {
                String _LoginUserName = txtUserName.getText().toString();
                ContentValues values = new ContentValues();
                SimpleDateFormat fort = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
                        Locale.getDefault());
                Date curDate = new Date(System.currentTimeMillis());
                String time = fort.format(curDate);
                values.put("UserName", _LoginUserName);
                values.put("LoginTime", time);
                values.put("State", 0);
                helper = new SqliteDBHelper(getApplicationContext());
                db = helper.getReadableDatabase();
                helper.Insert(values, helper.UserLogin_Log);
            } catch (Exception e) {
                ErrorMessageInfo._GetErrorMessage("LoginActivity", e.toString(),
                        getApplicationContext());
            }
        }
    
        public void _SendLoginLog() {
            try {
                ArrayList<HashMap<String, Object>> list = _GetLoginLogData();
                int count = list.size();
                for (int i = 0; i < count; i++) {
                    String id = list.get(i).get("ID").toString();
                    ConfigureModel model = _GetConfigure();
                    String ip = model.ipAddress;
                    String port = model.port;
                    String url = "http://" + ip + ":" + port
                            + "/WebServers/yonghudenglu.asmx";
                    String nameSpace = "http://tempuri.org/";
                    String SOAP_ACTION = "http://tempuri.org/SetObject";
                    String method = "SetObject";
                    SoapObject request = new SoapObject(nameSpace, method);
                    request.addProperty("DepartID", _DepartId);
                    request.addProperty("UserName", hashmap.get("UserName")
                            .toString() == null ? "" : hashmap.get("UserName")
                            .toString());
                    request.addProperty("BiaoDuan", "");
                    request.addProperty("GongSi", "");
                    request.addProperty("DengLuShiJian", hashmap.get("LoginTime")
                            .toString() == null ? "" : hashmap.get("LoginTime")
                            .toString());
                    request.addProperty("XingMing", "");
                    request.addProperty("UserID", _UserId);
                    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                            SoapEnvelope.VER11);
                    envelope.bodyOut = request;
                    envelope.dotNet = true;
                    AndroidHttpTransport transport = new AndroidHttpTransport(url);
                    try {
                        if (isOpenNetWork()) {
                            transport.call(SOAP_ACTION, envelope);
                            if (envelope.getResponse() != null) {
                                Object object = envelope.getResponse();
                                String result = object.toString();
                                if (!result.equals("0")) {
                                    helper = new SqliteDBHelper(this);
                                    db = helper.getWritableDatabase();
                                    String sql = "update LoginLog set State = 1 where ID='"
                                            + id + "'";
                                    db.execSQL(sql);
                                    Toast.makeText(getApplicationContext(), "上传成功",
                                            Toast.LENGTH_LONG).show();
                                } else {
                                    Toast.makeText(getApplicationContext(), "上传失败",
                                            Toast.LENGTH_LONG).show();
                                }
                            }
                        }
                    } catch (Exception e) {
                        ErrorMessageInfo._GetErrorMessage("LoginActivity",
                                e.toString(), getApplicationContext());
                    }
                }
            } catch (Exception e) {
                ErrorMessageInfo._GetErrorMessage("LoginActivity", e.toString(),
                        getApplicationContext());
            }
        }
    
        public ArrayList<HashMap<String, Object>> _GetLoginLogData() {
            arrayList = new ArrayList<HashMap<String, Object>>();
            try {
                helper = new SqliteDBHelper(this);
                SQLiteDatabase mdb = helper.getReadableDatabase();
                StringBuilder _sql = new StringBuilder();
                _sql.append(" select * from LoginLog where State = 0 ");
                Cursor c = mdb.rawQuery(_sql.toString(), null);
                while (c.moveToNext()) {
                    hashmap = new HashMap<String, Object>();
                    hashmap.put("ID", c.getString(0));
                    hashmap.put("UserName", c.getString(1));
                    hashmap.put("LoginTime", c.getString(2));
                    hashmap.put("State", c.getString(3));
                    arrayList.add(hashmap);
                }
            } catch (Exception e) {
                ErrorMessageInfo._GetErrorMessage("LoginActivity", e.toString(),
                        getApplicationContext());
            }
            return arrayList;
        }
    
        // 网络监测
        private boolean isOpenNetWork() {
            ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            if (connManager.getActiveNetworkInfo() != null) {
                return connManager.getActiveNetworkInfo().isAvailable();
            }
            return false;
        }
    }
  • 相关阅读:
    JNUOJ 1187
    JNUOJ 1184
    HDU 4848
    HDU 4849
    哈夫曼树和哈弗曼编码小记
    HDU 5726
    POJ 3368 & UVA 11235
    2016江苏省CPC省赛 I
    POJ 3928
    POJ 3067
  • 原文地址:https://www.cnblogs.com/xiaoyao095/p/4520079.html
Copyright © 2011-2022 走看看