Android 网络数据访问

学习自:《Android应用开发揭秘》第八章 http://blog.csdn.net/wenwei19861106/article/details/8702643

               推荐看真实书籍,较电子书更有感觉,映像更深。

小清新提示:文章最后面有彩蛋哟~~嚯嚯嚯嚯


Android 平台有3种网络接口可以使用,

他们分别是: java.net.*(标准Java接口)  org.apache(Apache接口)  android.net.*(Android网络接口)


1.标准java接口

   java.net.*(标准Java接口)提供与联网有关的类,包括流和数据包套接字、Internet协议、常见HTTP处理。

2.Apache HttpClient(现在已不推荐用这个,具体原因上度娘)

  org.apache是在标准Java接口的原有基础上进行扩展和封装,以满足更多的需求。

3.Android网络接口

   android.net.*包是通过对Apache中HttpClient的封装实现的一个Http编程接口。但一般用于socket


标准Java接口GET方式请求网络 

public class JavaGet extends Activity {

	private static final String HTTPADDRESS = "http://jcdzz.hbncw.cn:8080/SelQuestionList.aspx?Count=2"; 
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		try {
			//标准Java接口GET方式请求网络
			requestNetWork_JavaGet();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void requestNetWork_JavaGet() throws Exception{
		//构造一个URL对象
		URL url = new URL(HTTPADDRESS);
		//使用HttpURLConnection打开连接,  默认连接方式为GET
		//HttpURLConnection继承URLConnection, 都为抽象类,故不能实例化。其对象主要从URL的openConnection()方法获得。
		HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
		int responseState = urlConn.getResponseCode();
		if(responseState == 200){ //200代表请求成功
			//得到读取的内容(流)
			InputStream is = urlConn.getInputStream();
			//处理数据
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader bufferReader = new BufferedReader(isr);
			String resultData = "";
			String inputLine = null;
			while((inputLine = bufferReader.readLine()) != null){
				resultData += inputLine + "\n";
			}
			is.close();
			urlConn.disconnect();
			
			System.out.println("GET方式结果:"+resultData);
			
		}
	}

}

标准Java接口POST方式请求网络 

public class JavaPost extends Activity {

	String HTTPADDRESS = "http://jcdzz.hbncw.cn:8080/SelQuestionList.aspx";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		try {
			//标准Java接口POST方式请求网络
			requestNetWork_JavaPOST();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void requestNetWork_JavaPOST() throws Exception{
		//构造URL对象
		URL url = new URL(HTTPADDRESS);
		//使用HttpURLConnection打开连接
		
		HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
		urlConn.setRequestMethod("POST");
		//因为是post请求,需要设置为true
		urlConn.setDoOutput(true);
		urlConn.setDoInput(true);
		//post请求不能使用缓存
		urlConn.setUseCaches(false);
		urlConn.setInstanceFollowRedirects(true);
		urlConn.connect();
		
		DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());
		String content = "Count="+URLEncoder.encode("3", "UTF-8");
		out.writeBytes(content);
		out.flush();
		out.close();
		
		//得到数据
		InputStream is = urlConn.getInputStream();
		... //数据处理方式同Get处理数据一样
		...
		System.out.println("post方式结果:"+resultData);
	}
}

Apache HttpClient GET方式请求网络 

public class ApacheGet extends Activity {

private static final String HTTPADDRESS = "http://jcdzz.hbncw.cn:8080/SelQuestionList.aspx?Count=2"; 
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		try {
			//标准Apache接口GET方式请求网络
			requestNetWork_ApacheGet();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void requestNetWork_ApacheGet() throws Exception{
		//得到HttpClient对象
		//DefaultHttpClient是默认的一个Http客户端,用他可以创建一个Http连接
		HttpClient httpClient = new DefaultHttpClient(); 
		//HttpGet连接对象
		HttpGet httpRequest = new HttpGet(HTTPADDRESS);
		//请求HttpClient,取得HttpResponse
		HttpResponse httpResponse = httpClient.execute(httpRequest);
		if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ //请求成功
			//取得返回的字符串
			String result = EntityUtils.toString(httpResponse.getEntity());
			System.out.println("Apache get方式结果:"+result);
		}
		
	}
}

Apache HttpClient POST方式请求网络

public class ApachePost extends Activity {

private static final String HTTPADDRESS = "http://jcdzz.hbncw.cn:8080/SelQuestionList.aspx"; 
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		try {
			//标准Apache接口POST方式请求网络
			requestNetWork_ApachePost();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void requestNetWork_ApachePost() throws Exception{
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost httpRequest = new HttpPost(HTTPADDRESS);
		//添加参数
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("Count", "3"));
		HttpEntity httpEntity = new UrlEncodedFormEntity(params, "UTF-8");
		httpRequest.setEntity(httpEntity);
		//请求HttpClient,取得HttpResponse
		HttpResponse httpResponse = httpClient.execute(httpRequest);
		if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
			String result = EntityUtils.toString(httpResponse.getEntity());
			System.out.println("Apache post方式结果:"+result);
		}
	}
}


Demo传送门:http://download.csdn.net/detail/u012524598/7110131


推荐一种时间管理的方法番茄时间管理法。有兴趣的可以百度搜搜,是一本关于时间管理的书。

做事效率不高的原因: 因为大多数人做事情时很容易受到外界因素干扰,或者自制力不够。就会导致做这件事做着做着就跑另外一件事情上去了,这样就会出现做事效率不够高,这种情况时有发生。

书主要思想做任何事,想要提高效率,就要利用好时间,一步一步来完成这件事。人的注意力是有时间限制的,通过调查研究,20分钟为一个关注时长。

这种管理法深意是,在这个20分钟内,你只关注一件事,并且要自己主动减少外界的干扰(比如QQ设置隐身等等),如果有事打扰,你可以先做记录,20分钟后再做。20分钟后休息一下,然后继续下一个20分钟。这样就可以很好的利用时间。这种类似的软件可以照度娘,可以安装到手机上。

利益相关:只是觉得很有效,仅为分享


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值