界面很简单
MainActivity.java
1 package com.dasou.applyData; 2 3 import com.dasou.applyData.login.loginServlet; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.view.View; 8 import android.widget.Button; 9 import android.widget.EditText; 10 import android.widget.Toast; 11 12 public class MainActivity extends Activity { 13 private EditText etn,etp; 14 private Button bn; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_main); 20 etn=(EditText)findViewById(R.id.etn); 21 etp=(EditText)findViewById(R.id.etp); 22 23 24 } 25 public void click(View view){ 26 final String username=etn.getText().toString().trim(); 27 final String password=etp.getText().toString().trim(); 28 //String path="http://111.79.31.93:8888/web/loginServlet?username="+name+"&password="+password; 29 new Thread(){ 30 public void run() { 31 final String result=loginServlet.loginServlet(username, password); 32 if(result!=null){ 33 //不为空则请求成功 34 //由于子线程中无法进行UI操作,所以需要在主线程中进行该操作 35 //该方法就是个主线程运行器,直接将代码塞入该运行器中,不必拿到主线程框架中 36 runOnUiThread(new Runnable() { 37 public void run() { 38 Toast.makeText(MainActivity.this, result, 0).show(); 39 } 40 }); 41 42 }else{ 43 //请求失败 44 runOnUiThread(new Runnable() { 45 public void run() { 46 Toast.makeText(MainActivity.this, "请求失败", 0).show(); 47 } 48 }); 49 } 50 51 }; 52 }.start(); 53 } 54 55 56 57 58 59 }
该类主要提供链接服务器的功能
loginservlet.java
1 package com.dasou.applyData.login; 2 3 import java.io.InputStream; 4 import java.net.URL; 5 6 import javax.net.ssl.HttpsURLConnection; 7 8 import com.dasou.applyData.utils.StreamTool; 9 10 public class loginServlet { 11 public static String loginServlet(String username,String password){ 12 try{ 13 String path="http://59.52.195.152:8888/web/loginServlet?" + 14 "username="+username+"&password="+password; 15 URL url=new URL(path); 16 HttpsURLConnection conn=(HttpsURLConnection)url.openConnection(); 17 conn.setConnectTimeout(5000); 18 conn.setRequestMethod("GET"); 19 //获取服务器返回码 20 int coad=conn.getResponseCode(); 21 if(coad==200){ 22 //请求成功 23 //获取服务器返回来的流 24 InputStream is=conn.getInputStream(); 25 String text=StreamTool.readIputStream(is); 26 return text; 27 28 }else{ 29 return null; 30 } 31 32 33 }catch(Exception e){ 34 e.printStackTrace(); 35 36 }return null; 37 38 } 39 40 }
该类是自定义于loginServlet的工具类,当获取到正确的服务器返回码时,如何接收服务器的数据流
streamTool.java
1 package com.dasou.applyData.utils; 2 3 import java.io.ByteArrayOutputStream; 4 import java.io.InputStream; 5 6 public class StreamTool { 7 public static String readIputStream(InputStream is){ 8 try{ 9 ByteArrayOutputStream baso=new ByteArrayOutputStream(); 10 int len=0; 11 byte[] buffer=new byte[1024]; 12 while((len=is.read(buffer))!=-1){ 13 baso.write(buffer, 0, len); 14 15 } 16 is.close(); 17 baso.close(); 18 byte[] result=baso.toByteArray(); 19 String temp=new String(result); 20 return temp; 21 }catch(Exception e){ 22 return "获取失败"; 23 } 24 25 26 } 27 28 }
修改UI等操作是无法在子线程中进行操作的,因此需要将其转移到主线程中,除上篇提到的使用消息机制外,还可以使用runOnUiThread()方法中进行