学习自:《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分钟。这样就可以很好的利用时间。这种类似的软件可以照度娘,可以安装到手机上。
利益相关:只是觉得很有效,仅为分享