@universal
2017-04-23T08:33:07.000000Z
字数 2084
阅读 580
什么是http协议:超文本传输协议
http协议是一种无状态的协议,客户端每次打开一个web页面,就会向服务器建立一个新的连接,发送一个新的http请求,服务器处理客户端的请求,并将响应返回给客户端,并关闭与客户端的连接。(当客户端发起新的请求,那么他会与服务器建立新的连接,所以服务器并不记录关于客户的任何信息)
使用HttpURLConnection 发送http请求:
(1) 什么是url:统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。通俗点就是网址。
(2)http请求的方法:GET/POST(HEAD,OPTIONS,PUT,DELETE,TRACE)
GET:一般用于查询服务器上的数据,提交的数据附加在请求地址的后面
POST:一般用于更新服务器上的资源,提交的数据包含在http实体数据内,一般采用键值对的方式传递
(3)一般是开启线程发起http请求,在线程中无法更新UI
private void sendRequestWithHttpURLConnection() {
// 开启线程来发起网络请求
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection connection = null;
try {
URL url = new URL("http://www.baidu.com");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
InputStream in = connection.getInputStream();
// 下面对获取到的输入流进行读取
BufferedReader reader = new BufferedReader(new
InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
Message message = new Message();
message.what = 0;
// 将服务器返回的结果存放到Message中
message.obj = response.toString();
handler.sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
}).start();
}
解析数据
(1)json数据(体积小,省流量)
(2)api接口:应用程序编程接口,无需访问源码或者理解内部工作原理,开发者通过软件或者硬件就可以访问一组例程(功能接口或者服务的集合)
(3)使用JSONObject、JSONArray
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
String data= (String) msg.obj;
Log.d(TAG, "handleMessage: "+data);
try {
JSONObject js=new JSONObject(data);
JSONObject result=js.getJSONObject("result");
JSONArray future=result.getJSONArray("future");
for (int i=0;i<future.length();i++){
JSONObject jo=future.getJSONObject(i);
WeatherBean we=new WeatherBean();
we.setTemp(jo.getString("temperature"));
we.setWeather(jo.getString("weather"));
we.setWind(jo.getString("wind"));
we.setWeek(jo.getString("week"));
we.setDate(jo.getString("date"));
list.add(we);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
自学进阶任务
(1)了解学会使用okhttp、GSON
(2)理解接口回调机制
1、利用http从api接口(接口任意,百度、聚合api皆可)获取数据,然后解析,并显示出来(最好使用listview)
2、了解学习下多线程编程