HttpURLConnection——get,post


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();//转换为字符串,返回
}

}

 
   
时间: 2024-08-26 22:37:31

HttpURLConnection——get,post的相关文章

android中的HttpUrlConnection的使用之五

在使用之三中,我简单的介绍一下,get方式传递数据,而这里我将简单的介绍一下post方式.至于get方式与post方式有什么不同,我先卖一个关子,等我先把两个方式的关键代码贴出来,我再来说明这两种方式的不同和优缺点. java代码(首先说明一下,下面的代码都是客户端的代码,也就是手机端的代码) get方式的代码(出自使用之三) 1 private void DoGet() throws Exception 2 { 3 Log.i("main", "1"); 4 ur

Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)

http://blog.csdn.net/yanzi1225627/article/details/22222735 如前文所示的TCP局域网传送东西,除了对传输层的TCP/UDP支持良好外,Android对HTTP(超文本传输协议)也提供了很好的支持,这里包括两种接口: 1.标准Java接口(java.net) ----HttpURLConnection,可以实现简单的基于URL请求.响应功能: 2.Apache接口(org.appache.http)----HttpClient,使用起来更方

Android的HttpUrlConnection类的GET和POST请求

1 /** 2 * get方法使用 3 */ 4 private void httpGet() { 5 new Thread() { 6 @Override 7 public void run() { //此处的LOGIN是请求地址后面是拼接的参数 8 String path = LOGIN + "?phone=12345678900&password=123456"; 9 URL url; 10 HttpURLConnection connection; 11 try { 1

Android利用HttpURLConnection实现模拟登录

最近在做一个APP,需要模拟登录教务处,之前曾经用HttpClient做过,点这里,但是发现最新的Android SDK已经不支持Httpclient了,所以只好在琢磨一下HttpURLConnection实现了,其中一个问题浪费了不少时间,下面这行代码一旦添加就无法登录: httpURLConnection.setRequestProperty("Content-Type","text/html; charset=GBK"); 贴一下效果,由于是实现模拟登录,就没

HttpURLConnection请求

方法调用: //测试 public static void main(String[] args) { Map map = new HashMap(); map.put("type", "update" ); map.put("loginName", "4" ); map.put("userpasswd", "96e79218965eb72c92a549dd5a330112" ); ma

Java HttpURLConnection 以数据流写数据到Servlet

***************************************************    客户器端代码,响应请求流*************************************************** import java.io.*;import java.net.HttpURLConnection;import java.net.URL; public class StreamPostTest {    public static final String

HttpClient和HttpURLConnection整合汇总对比

性能 1.HttpUrlConnection直接支持GZIP压缩:HttpClient也支持,但要自己写代码处理. 2.HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭,在一段时间内所有程序可共用:HttpClient当然也能做到,但毕竟不如官方直接系统底层支持好. 3.HttpUrlConnection直接在系统层面做了缓存策略处理(4.0版本以上),加快了重复请求的速度. 4.关于速度方面,网上有些大牛做过测试,但因访问站点的数据量,二次连接访问等发现测试结果

1、Servlet 2、ServletConfig 3、ServletContext 4、HttpUrlConnection

1.Servlet 2.ServletConfig 3.ServletContext 4.HttpUrlConnection 07. 五 / J2EE / 没有评论 一.第一个Servlet的编写过程1.建立JavaWeb应用的目录HelloServlet—–应用名称WEB-INF——–classes:Servlet就放在此处libweb.xml 2.在classes目录中建立Servlet类一个Servlet必须直接或间接地实现javax.servlet.Servlet接口一般我们选择继承ja

java中的URLConnection和HttpURLConnection

1 URL url = new URL(strUrl); 2 URLConnection con = url.openConnection(); 1 URL url = new URL(strUrl); 2 HttpURLConnection con = (HttpURLConnection)url.openConnection();

HttpClient和HttpURLConnection的区别

总结了网上的一些资源,主要有以下两个观点: 分析一: 在研究Volley框架的源码中,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient.我也比较好奇这么使用的原因,于是专门找到了一位Google的工程师写的一篇博客,文中对HttpURLConnection和HttpClient进行了对比,下面我就给大家简要地翻译一下. 原文地址:http://android-