package com.ch.day4_httpurlconn;
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.Vector;
import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast;
public class MainActivity extends Activity { private TextView jsonData; private Button login; //服务器地址,路径 public static final String JSON_URL = "http://169.254.109.73:8080/tqyb/newsList.json"; public static final String LOGIN_URL = "http://169.254.109.73:8080/serverof1407a/loginServlet"; //定义一个handler的匿名内部类的对象 Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { if(msg.what == 1){ jsonData.setText((String)msg.obj); }else if(msg.what == 2){ login.setText((String)msg.obj); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } public void init(){ jsonData = (TextView) findViewById(R.id.jsonData); login = (Button) findViewById(R.id.login); //点击login到服务器登陆验证 login.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //在次线程中,请求web服务器 new Thread(){ public void run() { //调用httpurlconnection的get请求,到服务器请求json数据 // String rs = loginByServerByGet("admin", "123456"); String rs = loginByServerByPost("admin1", "123456"); //在此次线程中,通过handler把数据传递给主线程,显示在主线程的组件中 handler.sendMessage(handler.obtainMessage(2, rs)); if("success".equals(rs)){ //跳转到功能页面, }else{ //提示登录失败,请修改登录信息等等 } }; }.start(); } }); jsonData.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //在次线程中,请求web服务器 new Thread(){ public void run() { //调用httpurlconnection的get请求,到服务器请求json数据 String rs = getJsonFromWeb();//此方法请求web服务器 //在此次线程中,通过handler把数据传递给主线程,显示在主线程的组件中 handler.sendMessage(handler.obtainMessage(1, rs)); }; }.start(); } }); } //到服务器验证登陆信息,,通过post请求 public String loginByServerByPost(String name,String pass){ String rs = ""; URL url = null; HttpURLConnection urlConn = null; BufferedReader br = null; DataOutputStream output = null; // StringBuffer sb = new StringBuffer();//定义缓存字符串,拼装字符串 try { url = new URL(LOGIN_URL);//创建和服务器的连接对象URL urlConn = (HttpURLConnection) url.openConnection();//打开连接 urlConn.setConnectTimeout(5*1000);//设置连接超时容忍时间 urlConn.setReadTimeout(5*1000);//设置读取时间 //设置post请求 urlConn.setRequestMethod("POST"); urlConn.setDoInput(true); urlConn.setDoOutput(true); //通过post请求,向服务器传值 output = new DataOutputStream(urlConn.getOutputStream());//创建服务器的输出流 String data = "username="+name+"&userpass="+pass; output.write(data.getBytes()); output.flush(); output.close();//传值成功,完毕 if(urlConn.getResponseCode() == 200){//如果响应码为200表示响应成功,并且同时成功的相应了数据 //获得服务器相应的数据,字节输入流(数据流),转换为缓存字符流便于读取 br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"utf-8")); rs = br.readLine();//获得服务器返回的简单数据 System.out.println(rs); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return rs;//转换为字符串,返回 } //到服务器验证登陆信息,,通过get请求 public String loginByServerByGet(String name,String pass){ String rs = ""; URL url = null; HttpURLConnection urlConn = null; BufferedReader br = null; StringBuffer sb = new StringBuffer(LOGIN_URL);//定义缓存字符串,拼装字符串 try { sb.append("?username="+name); sb.append("&userpass="+pass); System.out.println(sb.toString()); url = new URL(sb.toString());//创建和服务器的连接对象URL urlConn = (HttpURLConnection) url.openConnection();//打开连接 urlConn.setConnectTimeout(5*1000);//设置连接超时容忍时间 urlConn.setReadTimeout(5*1000);//设置读取时间 if(urlConn.getResponseCode() == 200){//如果响应码为200表示响应成功,并且同时成功的相应了数据 //获得服务器相应的数据,字节输入流(数据流),转换为缓存字符流便于读取 br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"utf-8")); rs = br.readLine();//获得服务器返回的简单数据 System.out.println(rs); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return rs;//转换为字符串,返回 } public String getJsonFromWeb(){ URL url = null; HttpURLConnection urlConn = null; BufferedReader br = null; StringBuffer sb = new StringBuffer();//定义缓存字符串,拼装字符串 try { url = new URL(JSON_URL);//创建和服务器的连接对象URL urlConn = (HttpURLConnection) url.openConnection();//打开连接 urlConn.setConnectTimeout(5*1000);//设置连接超时容忍时间 urlConn.setReadTimeout(5*1000);//设置读取时间 if(urlConn.getResponseCode() == 200){//如果相应码为200表示响应成功,并且同时成功的相应了数据 //获得服务器相应的数据,字节输入流(数据流),转换为缓存字符流便于读取 br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"utf-8")); String str = null; while((str = br.readLine()) != null){//一行行的读取,一行行的收集 sb.append(str); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return sb.toString();//转换为字符串,返回 }
}
|