HttpClient&&HttpUrlConnection各种情况下的访问机制

在利用HttpClient&&&HttpUrlConnection大体上分为8个步骤

1)HttpClient (apache开发)
2)HttpURLConnection(google在发布安卓时在Java基础上修改得到的)

            使用HC(HttpClient)/UC(HttpURLConnection)进行网络访问的基本步骤:
            0. 申请权限 INTERNET访问权限
            1. 任何网络访问的相关代码,必须在工作线程中执行!
            2. 创建HC/UC对象
            3. 声明发起网络访问的方式(GET/POST)
            4. 进行网络连接
            5. 获得服务器响应的结果
            6. 解析结果,提取需要的内容
            7. 解析结果要提交到UI线程进行呈现
========================================================================
下面就对这两种访问服务器进行一个分析

A)利用AsyncTask采用HttpClient来于服务器就行交互。
    0)申请权限---》在清单文件中---》Internet
    1)起一个工作线程               new AsyncTask<Void,Void,___>(){
         重写                         doInbackGround(Void... params){
                                           try{
    2)创建HC                                 HttpClient client=new DefaultHttpClient();
    3)声明发起网络访问方式(POST/GET)       HttpPost post=new HttpPost("Schema+Host+Port+Path");                                             
                                  或者是     HttpGet get=new HttpGet("Schema+Host+Port+Path");
         3.1)设置头参数                     post(或者set).setHeader("Content-Type","application/x-www-from-urlencoded");note:这个参数是固定的
note:如果在利用服务器传来的验证码来进行     (只能是post)post.setHeader("Cookie",(sessionID))  --->sessionID是个自定义的变量
         3.2)设置body(entity)———》如果需要向服务器传值
                                              (2)List<NameValuePair> paramerters =new ArrayList<NameValuePair>();
                                               (3)parameters.add(new BasicNameValuePair(K,V));
                                               (1)HttpEntity entity =new UrlEncodeFromEntity(parameters);
        3.3)将赋完值的entity添加到访问流中     post.setEntity(entity);
    4)进行网络连接:                        client.execute(post);或者是get
    5)获得服务器响应                        HttpResponse resp=client.execute(post);    NOTE:4)5)是在一起处理的。
    6)解析结果,提取需要内容:          (0)HttpEntity respEntity  =resp.getEntity();
                                           (1)在HttpClient模式访问是,有变量方式获得(返回流中数据只为为String)String result=EntityUtil.toString(respEntity);
                                           (2)NOTE:如果涉及到验证码问题需要在获得响应结果5)处对头进行处理
                                            Header header=resp.getFirstHeader("Set-Cookie");
                                             String value=header.getValue.splite(";")[0];
                                           (3)如果返回流中代表的数据为bitmap等
                                              (0)+3.1)IntputStream is=respentity.getContent();
                                                  Bitmap bitamp=BitmapFactory.getContent();
                                              note:这种例子只是针对于流中的数据bitmap类型,其他形式类似
                                                    3.2)关闭高级流
   7)解析结果提交到UI线程              onPostExeute(_______ result){
                                             listener.on____Finish();
                                                                                 }

校验等操作还需要在头参数中添加


}

}


}.excute();


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值