美文网首页
Android客户端的Http请求

Android客户端的Http请求

作者: HolenZhou | 来源:发表于2016-08-19 17:27 被阅读281次

Http请求

  • 请求方式
    主要包含:GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT,我们一般只用到GET和POST。
  • GET和POST请求的区别
    这两种方式的区别主要表现在数据传递上:


    顺便我们从请求英文名的字面意思理解一下GET、POST、PUT和DELETE的区别:Get是最常用的,就是向Web Server发请求“获取”资源;那么Post就是向Web Server“邮寄”一些封装的数据包获取资源,这两者方法严格的说都是“索取”行为。
    Delete方法,顾名思义就是通过http请求删除指定的URL上的资源啦,Delete请求一般会返回3种状态码:

200 (OK) - 删除成功,同时返回已经删除的资源
202 (Accepted) - 删除请求已经接受,但没有被立即执行(资源也许已经被转移到了待删除区域)
204 (No Content) - 删除请求已经被执行,但是没有返回资源(也许是请求删除不存在的资源造成的)

而Put方法简单理解,就是往Web Server上直接扔资源(上传资源)嘛![^reference1]
GET,POST,PUT,DELETE URL 全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询 资源信息,而POST一般用于更新 资源信息(个人认为这是GET和POST的本质区别,也是协议设计者的本意,其它区别都是具体表现形式的差异 )。 [^reference2] 
  • Android客户端实现Http请求的方式和工具们
 //1.通过JDK自带的URLConnection
//Sun公司提供的库,也是Java的标准类库[java.net]中的一员,但这个类什么都没封装,用起来很原始,若需要高级功能,则会显得不太方便,比如重访问的自定义,会话和cookie等一些高级功能。
URL url = new URL("http://www.android.com/");   
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();   
try {
     InputStream in = new BufferedInputStream(urlConnection.getInputStream());
     readStream(in);
   } finally {
     urlConnection.disconnect();
   } 
//2.Apache的HttpClient
//Apache公司提供的库,提供高效的、最新的、功能丰富的支持HTTP协议工具包,支持HTTP协议最新的版本和建议,是个很不错的开源框架,封装了http的请求,参数,内容体,响应等,拥有众多API。
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet();
httpClient.execute(httpGet);  

最初的时候,不管是什么Http的框架都是基于以上两种最基础的API进行了各种再封装。而且因为HttpURLConnection早期的bug,所以在2.3之后建议使用HttpURLConnection,之前建议使用HttpClient。后来因为HttpClient的一些缺点和维护成本较高,Android开发团队转投更为轻便的HttpUrlConnection,所以5.0之后干脆废弃了HttpClient,6.0进行了删除。所以在Android-23中的sdk中,已经找不到HttpClient了。
当然,现在已经有了更新的OkHttp:OKHttp是Android版Http客户端。非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存。从Android4.4开始,HttpURLConnection的底层实现采用的是OkHttp。Volley在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient。这里指的是volley使用的http传输层,从volley创建RequestQueue的源码中可以看出:

if (stack == null) {
    if (Build.VERSION.SDK_INT >= 9) {
        stack = new HurlStack();
    } else {
        // Prior to Gingerbread, HttpUrlConnection was unreliable.
        // See: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
        stack = new HttpClientStack(AndroidHttpClient.newInstance(userAgent));
    }
}

代码中的HurlStack执行网络请求就是基于HttpURLConnection的。
不过因为Volley在功能扩展性上的局限,始终无法与OkHttp相比。所以Volley最终停止了更新,而OkHttp得到了官方的认可,并在不断优化。不过Volley可以轻松设置OkHttp作为其传输层,我们的项目中一直用的volley,想要使用OkHttp,只需要下面两行代码,指定使用的HttpStack为OkHttpStack即可:

OkHttpClient client = new OkHttpClient();
RequestQueue mRequestQueue = Volley.newRequestQueue(context, new OkHttpStack(client));

相关文章

  • 使用OkHttp进行网络同步异步操作

    OkHttp是一个Java和Android的HTTP和HTTP/2的客户端,负责发送HTTP请求以及接受HTTP响...

  • Android客户端的Http请求

    Http请求 请求方式主要包含:GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT,我们...

  • OkHttp

    github 介绍 一个现代的Http请求客户端,可以在java或者android使用,有以下特点 支持HTTP2...

  • 网络访问——HttpURLConnection

    Android 客户端访问网络发送HTTP请求方式一般有两种:HttpURLConnection 和 HttpCl...

  • session与cookie之间的关系

    一、客户端与服务端请求响应的关系 USER(客户端) 请求 tomcat(服务器), 属于HTTP请求。http...

  • HTTP

    HTTP是什么 超文本传输协议 http客户端发起请求,创建端口 http服务器在端口监听客户端请求 http服务...

  • Retrofit初识

    关于Retrofit Retrofit是一个针对Android和Java的类型安全的Http客户端/请求工具官网:...

  • TCP/HTTP/Socket

    HTTP和Scoket通信的区别。 http是客户端用http协议进行请求,发送请求时候需要封装http请求头,并...

  • node 小记(0418)http

    什么是http及相关知识 http客户端发起请求,创建端口 http服务器在端口监听客户端请求 http服务器向客...

  • IOS 网络请求构建--HTTP简介

    HTTP 介绍 1. HTTP请求与响应 HTTP请求遵循着客户端-服务器范式请求步鄹序列:客户端建立一个到服务器...

网友评论

      本文标题:Android客户端的Http请求

      本文链接:https://www.haomeiwen.com/subject/yhvbsttx.html