样式代码:
<?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>
1 private String reduio=""; 2 public void Login(View view) { 3 reduio=""; 4 5 String username="";String password=""; 6 EditText editText1 =(EditText)findViewById(R.id.username); 7 username=editText1.getText().toString(); 8 EditText editText2 =(EditText)findViewById(R.id.password); 9 password=editText2.getText().toString(); 10 if(username.isEmpty()) { 11 ShowMessage("用户名不能为空!"); 12 13 }else if(password.isEmpty()) 14 { 15 ShowMessage("密码不能为空!"); 16 } 17 else 18 { 19 20 new Thread(networkTask).start(); 21 while (reduio.equals("")) 22 { 23 } 24 if(reduio.equals("1")) 25 { 26 27 ShowMessage("登陆成功!"); 28 31 Intent intent = new Intent(MainActivity.this,ArticleListListActivity.class); 32 33 startActivity(intent); 34 } 35 else 36 { 39 ShowMessage("账号或密码错误!"); 40 } 41 } 42 } 43 Runnable networkTask = new Runnable( ) { 44 @Override 45 public void run() { 46 String nameSpace = "http://tempuri.org/";//用下面的测试地址,打开,找到命名空间,目前我测试的是这个 47 String methodName = "UserLogin";//方法名 48 String endPoint = "http://xxxxx/OneLogin.asmx?WSDL";//个人的测试接口,经过本人测试,只能用IP才能访问,不能通过域名访问,当然我是本机的模拟器,我是本地的android studio 49 String soapAction = "http://tempuri.org/UserLogin"; 50 51 String username="";String password=""; 52 EditText editText1 =(EditText)findViewById(R.id.username); 53 username=editText1.getText().toString(); 54 EditText editText2 =(EditText)findViewById(R.id.password); 55 password=editText2.getText().toString(); 56 SoapObject rpc = new SoapObject(nameSpace, methodName); 57 rpc.addProperty("usernmae", username); 58 rpc.addProperty("password", password); 59 // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本 60 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); 61 envelope.bodyOut = rpc; 62 // 设置是否调用的是dotNet开发的WebService 63 envelope.dotNet = true; 64 // 等价于envelope.bodyOut = rpc; 65 envelope.setOutputSoapObject(rpc); 66 HttpTransportSE transport = new HttpTransportSE(endPoint); 67 try { 68 // 调用WebService 69 transport.call(soapAction, envelope); 70 } catch (Exception e) { 71 e.printStackTrace(); 72 reduio="no"; 73 } 74 SoapObject object = (SoapObject) envelope.bodyIn; 75 if(object!=null) { 76 String result = object.getProperty(0).toString(); 77 reduio=result; 78 } 79 80 } 81 }; 82 private void ShowMessage(String msg) 83 { 84 Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); 85 }
我这个代码确实自己看着也不太好,总觉得很多地方多余,比如为什么要把调用方法隔离出来,但是本人测试过,直接调用,直接给你报错,UI线程中不能访问网络,必须重新写个线程去访问,所以上面我写了一个while不停的循环,看看方法是否执行成功,
我不知道用安卓机会不会这样,但是模拟器确实不怎么行的通。
给自己的 一点笔记吧,加油。继续,下一篇应该是写列表和数据展示,给自己一点勇气继续学下去。