HttpURLConnection——get,post

  1 package com.ch.day4_httpurlconn;
  2 
  3 import java.io.BufferedReader;
  4 import java.io.DataOutputStream;
  5 import java.io.IOException;
  6 import java.io.InputStreamReader;
  7 import java.net.HttpURLConnection;
  8 import java.net.MalformedURLException;
  9 import java.net.URL;
 10 import java.util.ArrayList;
 11 import java.util.Iterator;
 12 import java.util.Vector;
 13 
 14 import android.os.Bundle;
 15 import android.os.Handler;
 16 import android.app.Activity;
 17 import android.view.Menu;
 18 import android.view.View;
 19 import android.view.View.OnClickListener;
 20 import android.widget.Button;
 21 import android.widget.TextView;
 22 import android.widget.Toast;
 23 
 24 public class MainActivity extends Activity {
 25     private TextView jsonData;
 26     private Button login;
 27     //服务器地址,路径
 28     public static final String JSON_URL = "http://169.254.109.73:8080/tqyb/newsList.json";
 29     public static final String LOGIN_URL = "http://169.254.109.73:8080/serverof1407a/loginServlet";
 30     
 31     //定义一个handler的匿名内部类的对象
 32     Handler handler = new Handler(){
 33         public void handleMessage(android.os.Message msg) {
 34             if(msg.what == 1){
 35                 jsonData.setText((String)msg.obj);
 36             }else if(msg.what == 2){
 37                 login.setText((String)msg.obj);
 38             }
 39         };
 40     };
 41     
 42     @Override
 43     protected void onCreate(Bundle savedInstanceState) {
 44         super.onCreate(savedInstanceState);
 45         setContentView(R.layout.activity_main);
 46         
 47         init();
 48     }
 49     
 50     public void init(){
 51         jsonData = (TextView) findViewById(R.id.jsonData);
 52         login = (Button) findViewById(R.id.login);
 53         //点击login到服务器登陆验证
 54         login.setOnClickListener(new OnClickListener() {
 55             @Override
 56             public void onClick(View v) {
 57                 //在次线程中,请求web服务器
 58                 new Thread(){
 59                     public void run() {
 60                         //调用httpurlconnection的get请求,到服务器请求json数据
 61 //                        String rs = loginByServerByGet("admin", "123456");
 62                         
 63                         String rs = loginByServerByPost("admin1", "123456");
 64                         //在此次线程中,通过handler把数据传递给主线程,显示在主线程的组件中
 65                         handler.sendMessage(handler.obtainMessage(2, rs));
 66                         if("success".equals(rs)){
 67                             //跳转到功能页面,
 68                         }else{
 69                             //提示登录失败,请修改登录信息等等
 70                         }
 71                         
 72                     };
 73                 }.start();
 74             }
 75         });
 76         
 77         jsonData.setOnClickListener(new OnClickListener() {
 78             @Override
 79             public void onClick(View v) {
 80                 //在次线程中,请求web服务器
 81                 new Thread(){
 82                     public void run() {
 83                         //调用httpurlconnection的get请求,到服务器请求json数据
 84                         String rs = getJsonFromWeb();//此方法请求web服务器
 85                         //在此次线程中,通过handler把数据传递给主线程,显示在主线程的组件中
 86                         handler.sendMessage(handler.obtainMessage(1, rs));
 87                     };
 88                 }.start();
 89             }
 90         });
 91     }
 92     //到服务器验证登陆信息,,通过post请求
 93     public String loginByServerByPost(String name,String pass){
 94         String rs = "";
 95         URL url = null;
 96         HttpURLConnection urlConn = null;
 97         BufferedReader br = null;
 98         DataOutputStream output = null; 
 99 //        StringBuffer sb = new StringBuffer();//定义缓存字符串,拼装字符串
100         try {
101             
102             url = new URL(LOGIN_URL);//创建和服务器的连接对象URL
103             urlConn = (HttpURLConnection) url.openConnection();//打开连接
104             urlConn.setConnectTimeout(5*1000);//设置连接超时容忍时间
105             urlConn.setReadTimeout(5*1000);//设置读取时间
106             
107             //设置post请求
108             urlConn.setRequestMethod("POST");
109             urlConn.setDoInput(true);
110             urlConn.setDoOutput(true);
111             //通过post请求,向服务器传值
112             output = new DataOutputStream(urlConn.getOutputStream());//创建服务器的输出流
113             String data = "username="+name+"&userpass="+pass;
114             output.write(data.getBytes());
115             output.flush();
116             output.close();//传值成功,完毕
117             
118             if(urlConn.getResponseCode() == 200){//如果响应码为200表示响应成功,并且同时成功的相应了数据
119                 //获得服务器相应的数据,字节输入流(数据流),转换为缓存字符流便于读取
120                 br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"utf-8"));
121                 rs = br.readLine();//获得服务器返回的简单数据
122                 System.out.println(rs);
123             }
124             
125         } catch (IOException e) {
126             // TODO Auto-generated catch block
127             e.printStackTrace();
128         }
129         
130         return rs;//转换为字符串,返回
131     }
132     //到服务器验证登陆信息,,通过get请求
133     public String loginByServerByGet(String name,String pass){
134         String rs = "";
135         URL url = null;
136         HttpURLConnection urlConn = null;
137         BufferedReader br = null;
138         StringBuffer sb = new StringBuffer(LOGIN_URL);//定义缓存字符串,拼装字符串
139         try {
140             sb.append("?username="+name);
141             sb.append("&userpass="+pass);
142             System.out.println(sb.toString());
143             url = new URL(sb.toString());//创建和服务器的连接对象URL
144             urlConn = (HttpURLConnection) url.openConnection();//打开连接
145             urlConn.setConnectTimeout(5*1000);//设置连接超时容忍时间
146             urlConn.setReadTimeout(5*1000);//设置读取时间
147             if(urlConn.getResponseCode() == 200){//如果响应码为200表示响应成功,并且同时成功的相应了数据
148                 //获得服务器相应的数据,字节输入流(数据流),转换为缓存字符流便于读取
149                 br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"utf-8"));
150                 rs = br.readLine();//获得服务器返回的简单数据
151                 System.out.println(rs);
152             }
153             
154         } catch (IOException e) {
155             // TODO Auto-generated catch block
156             e.printStackTrace();
157         }
158         
159         return rs;//转换为字符串,返回
160     }
161     
162     
163     public String getJsonFromWeb(){
164         URL url = null;
165         HttpURLConnection urlConn = null;
166         BufferedReader br = null;
167         StringBuffer sb = new StringBuffer();//定义缓存字符串,拼装字符串
168         try {
169             url = new URL(JSON_URL);//创建和服务器的连接对象URL
170             urlConn = (HttpURLConnection) url.openConnection();//打开连接
171             urlConn.setConnectTimeout(5*1000);//设置连接超时容忍时间
172             urlConn.setReadTimeout(5*1000);//设置读取时间
173             if(urlConn.getResponseCode() == 200){//如果相应码为200表示响应成功,并且同时成功的相应了数据
174                 //获得服务器相应的数据,字节输入流(数据流),转换为缓存字符流便于读取
175                 br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"utf-8"));
176                 String str = null;
177                 while((str = br.readLine()) != null){//一行行的读取,一行行的收集
178                     sb.append(str);
179                 }
180             }
181             
182         } catch (IOException e) {
183             // TODO Auto-generated catch block
184             e.printStackTrace();
185         }
186         
187         return sb.toString();//转换为字符串,返回
188     }
189 
197 }
原文地址:https://www.cnblogs.com/1426837364qqcom/p/5112612.html