欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android Http协议及Handler

程序员文章站 2022-03-10 14:15:55
...

      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);  //发送数据			
		}
	};

 

相关标签: http