GET方法向服务器提交数据

界面很简单

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 }
View Code

该类主要提供链接服务器的功能

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 }
View Code

该类是自定义于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 }
View Code

修改UI等操作是无法在子线程中进行操作的,因此需要将其转移到主线程中,除上篇提到的使用消息机制外,还可以使用runOnUiThread()方法中进行

原文地址:https://www.cnblogs.com/DASOU/p/GET.html