样式代码:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/content_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.example.administrator.my_application.MainActivity" tools:showIn="@layout/app_bar_main"> <CheckBox android:text="记住密码" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="35dp" android:layout_marginStart="35dp" android:id="@+id/ispwd" android:layout_below="@+id/password" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="33dp" /> <Button android:text="登陆" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/bt_login" android:layout_alignBottom="@+id/ispwd" android:layout_alignRight="@+id/password" android:layout_alignEnd="@+id/password" android:elevation="0dp" android:onClick="Login" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:layout_marginTop="20dp" android:id="@+id/username" android:layout_alignParentTop="true" android:layout_alignLeft="@+id/ispwd" android:layout_alignStart="@+id/ispwd" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPassword" android:ems="10" android:id="@+id/password" android:layout_below="@+id/username" android:layout_alignLeft="@+id/username" android:layout_alignStart="@+id/username" /> </RelativeLayout>
private String reduio=""; public void Login(View view) { reduio=""; String username="";String password=""; EditText editText1 =(EditText)findViewById(R.id.username); username=editText1.getText().toString(); EditText editText2 =(EditText)findViewById(R.id.password); password=editText2.getText().toString(); if(username.isEmpty()) { ShowMessage("用户名不能为空!"); }else if(password.isEmpty()) { ShowMessage("密码不能为空!"); } else { new Thread(networkTask).start(); while (reduio.equals("")) { } if(reduio.equals("1")) { ShowMessage("登陆成功!"); Intent intent = new Intent(MainActivity.this,ArticleListListActivity.class); startActivity(intent); } else { ShowMessage("账号或密码错误!"); } } } Runnable networkTask = new Runnable( ) { @Override public void run() { String nameSpace = "http://tempuri.org/";//用下面的测试地址,打开,找到命名空间,目前我测试的是这个 String methodName = "UserLogin";//方法名 String endPoint = "http://xxxxx/OneLogin.asmx?WSDL";//个人的测试接口,经过本人测试,只能用IP才能访问,不能通过域名访问,当然我是本机的模拟器,我是本地的android studio String soapAction = "http://tempuri.org/UserLogin"; String username="";String password=""; EditText editText1 =(EditText)findViewById(R.id.username); username=editText1.getText().toString(); EditText editText2 =(EditText)findViewById(R.id.password); password=editText2.getText().toString(); SoapObject rpc = new SoapObject(nameSpace, methodName); rpc.addProperty("usernmae", username); rpc.addProperty("password", password); // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); envelope.bodyOut = rpc; // 设置是否调用的是dotNet开发的WebService envelope.dotNet = true; // 等价于envelope.bodyOut = rpc; envelope.setOutputSoapObject(rpc); HttpTransportSE transport = new HttpTransportSE(endPoint); try { // 调用WebService transport.call(soapAction, envelope); } catch (Exception e) { e.printStackTrace(); reduio="no"; } SoapObject object = (SoapObject) envelope.bodyIn; if(object!=null) { String result = object.getProperty(0).toString(); reduio=result; } } }; private void ShowMessage(String msg) { Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); }
我这个代码确实自己看着也不太好,总觉得很多地方多余,比如为什么要把调用方法隔离出来,但是本人测试过,直接调用,直接给你报错,UI线程中不能访问网络,必须重新写个线程去访问,所以上面我写了一个while不停的循环,看看方法是否执行成功,
我不知道用安卓机会不会这样,但是模拟器确实不怎么行的通。
给自己的 一点笔记吧,加油。继续,下一篇应该是写列表和数据展示,给自己一点勇气继续学下去。
网上搜集了好多,但是最终,网上的好多代码也是有些问题和披露,比如说api地址,等等问题,本地调试会费点劲。目前我还没做session或者cookie 保存用户状态,下次加上去。
刚学安卓的一些笔记,
最新推荐文章于 2024-09-13 09:25:28 发布