Android Http协议及Handler
Http消息类型分为:请求(Request)消息,响应(Response)消息
Http请求消息结构:包括(请求行(第一行),报头行(后面多行),空格换行(CRLF),可选实体)
Full-Request = Request-Line
*(General-Header
| Request-Header
| Entity-Header)
CRLF
[Entity-Body]
实例:GET /servlet/Servletform??format=json HTTP/1.1 //请求行,GET提交方法参数放在请求 行,POST提交参 数放在实体。?前是响应请求的servlet所在路径,?后是参数
Connection:close
Host: localhost:8080 //链接地址,此行必须有,其他可选
User-agent:Mozilla/4.0
Accept-Encoding:gzip,compress
Accept-language:en
CR LF //空格换行
Entity-Body //实体
Http响应消息结构:状态行(status line)、报头和实体主体三部分组成。
Full-Response =Status-Line
*(General-Header
| Response-Header
| Entity-Header)
CRLF
[Entity-Body]
实例: HTTP/1.1 200 OK //200表示连接成功
Connection:close
Date: Thu, 13 Oct 2005 03:17:33 GMT //服务器创建并发送本响应消息的日期和时间
Server: Apache/2.0.54 (Unix) //服务器类型
Last—Nodified:Mon,22 Jun 1998 09;23;24 GMT
Content—Length:682l
一般进行http请求运用架包就省去很多http协议组建的麻烦。(架包已上传)
public void conn(){ //自定义方法进行http请求
AsyncHttpClient client = new AsyncHttpClient();
RequestParams rp = new RequestParams(); //用于包装要传递的数据
rp.put("username","fb");
rp.put("password","181818");
// client.post("Http://192.168.1.116:8080/get/servlet/TestServlet?format=json", responseHandler
//进行get请求
client.get("Http://10.0.2.2:8080/servletExample/servlet/Servletform?format=json",rp,new JsonHttpResponseHandler(){
@Override
public void onSuccess(int statusCode, Header[] headers,JSONArray respons e) { //请求成功后返回 JSONArray数据。然后进行相应操作(onSuccess方法可选用)
super.onSuccess(statusCode, headers, response);
//进行相应操作
}
@Override
public void onSuccess(int statusCode, Header[] headers,
JSONObject response) { //请求成功返回JSONObject数据
super.onSuccess(statusCode, headers, response);
}
});
}
Handler:
andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。
Handler可以使得其他线程能够获取修改Actiyity里面的数据。
实例:
private Handler h=new Handler(){
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what){
case TRIM_MEMORY_BACKGROUND:
test.setText(msg.getData().getString("fb"));
break;
}
};
};
Runnable r=new Runnable() {
public void run() {
Message s=h.obtainMessage(TRIM_MEMORY_BACKGROUND)
Bundle b=new Bundle();
b.putString("fb","good"); //绑定数据
s.setData(b);
h.sendMessage(s); //发送数据
}
};
推荐阅读
-
Android编程使用HTTP协议与TCP协议实现上传文件的方法
-
Android Handler移除Message详解及实例代码
-
Android编程中Handler原理及用法实例分析
-
Android中使用Handler及Countdowntimer实现包含倒计时的闪屏页面
-
Android Handler移除Message详解及实例代码
-
Android Handler leak分析及解决办法详解
-
Android studio中HTTP协议代理怎么设置?
-
Android中使用Handler及Countdowntimer实现包含倒计时的闪屏页面
-
Android Handler leak分析及解决办法详解
-
Android studio中HTTP协议代理怎么设置?