网络请求三方库——OkHttp

  我们知道在Android开发中是可以直接使用现成的API进行网络请求的,就是使用 HttpClient 和 HttpURLConnention ,而Android 4.4 之后 HttpClient 已经被废弃,由于此前一直很流行的三方库 android-async-http 是基于 HttpClient 的,所以作者已经放弃了维护 android-async-http 库,我们在项目中也尽量不要使用这个库。

  OkHttp是Squaur公司开源的一个高性能Http请求库,它的职责同 HttpURLConnention 是一样的,支持SDPY、Http 2.0、websocket,支持同步、异步,而且OkHttp又封装了线程池、数据转换、参数使用、错误处理等,API使用起来更加方便。

  这里首先简单的介绍一下最新版 OkHttp 3.4.1 的使用以及对于同步GET和POST请求的简单封装,后续会补上异步GET和PST请求、源码解析等内容。

OkHttp同步GET、POST请求网络

  下面代码封装了两个使用OkHttp同步GET、POST请求网络的API,服务器返回来的都是JSON格式的字符串,而对于POST请求,客户端提交上去的也是JSON格式的字符串,阮吗如下:

/**
 * Created by SteveWang on 2016/7/28.
 */
public class OkHttpUtils
{
    private static final OkHttpClient okHttpClient = new OkHttpClient();
    public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

    /**
     * GET方式同步请求网络,服务器端返回JSON格式的字符串
     * @param urlString
     * @return
     * @throws IOException
     */
    public static String getStringFromURL(String urlString) throws IOException
    {
        // 1. 获取Request对象
        Request request = new Request.Builder()
                .url(urlString)
                .build();
        // 2. 获取Response对象
        Response response = okHttpClient.newCall(request).execute();
        // 3. 获取ResponseBody对象
        ResponseBody responseBody = response.body();
        if(responseBody != null)
        {
            // 4. 从ResponseBody对象中获取服务器端返回数据
            return responseBody.string();
        }
        return null;
    }

    /**
     * POST方式同步请求网络,向服务器端提交JSON格式的请求,服务器端返回JSON格式的字符串
     * @param urlString
     * @param jsonRequest
     * @return
     * @throws IOException
     */
    public static  String postJsonToURL(String urlString, String jsonRequest) throws IOException
    {
        // 1. 首先构造RequestBody对象,指定了MediaType为JSON
        RequestBody requestBody = RequestBody.create(JSON, jsonRequest);
        // 2. 获取Request对象,将RequestBody放置到Request对象中
        Request request = new Request.Builder()
                .url(urlString)
//                .addHeader(name, value)   // 添加请求头
                .post(requestBody)
                .build();
        // 3. 获取Response对象
        Response response = okHttpClient.newCall(request).execute();
        // 4. 获取ResponseBody对象,从中获取服务器返回的JSON数据
        return response.body().string();
    }
}
时间: 2024-10-18 17:12:05

网络请求三方库——OkHttp的相关文章

网络请求urllib库的基本使用 ----------python的爬虫学习

简单的网络请求: from urllib import request url = "http://www.baidu.com" rep=request.urlopen(url) urlopen请求数据,返回给了变量rep 对返回数据的操作: urlopen()返回的结果是类文件对象,也是可迭代的,下面列举出比较常用的方法read().readline().readlines() :读取文件 rep = request.urlopen(url) rep.read() [Squeezed

iOS开发之网络请求(基于AFNetworking的再封装)

最近一直很忙也没有什么时间写博客了.放假了休息一下,就写一篇博客来总结一下最近做项目中出现过的问题吧!!! 首先,在项目中我的起到了什么作用,无非就是把美工(UI设计师)给我们的图显示出来,然后再和服务器进行交互. 那个我们和服务器怎么交互呢?最简单的方式就是说话呗,但是我们要跟服务器说话必须通过我们彼此能听的懂的话来交流,也就需要制定很多的协议了(http,tcp,udp等,这个有兴趣的朋友可以了解一下网络协议的东西).但是我平常最常使用的还是http协议. http://www.cnblog

iOS:iOS开发非常全的三方库、插件、大牛博客等等

iOS开发非常全的三方库.插件.大牛博客等等 github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自github:https://github.com/Tim9Liu9/TimLiu-iOS UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableView或

iOS开发常用三方库、插件、知名博客等等

TimLiu-iOS   Swift版本点击这里 欢迎加入QQ交流群: 594119878 介绍 这是一个用于iOS开发的各种开源库.开源资料.开源技术等等的索引库. github排名 https://github.com/trending,github搜索:https://github.com/search 使用方法 根据目录关键字搜索,记得包含@,以保证搜索目录关键字的唯一性. 问题反馈 期待大家和我们一起共同维护,同时也期望大家随时能提出宝贵的意见(直接提交issues即可).请广大网友只

iOS开发 非常全的三方库、插件、大牛博客等等

UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看"使用方法". (国人写) XHRefreshControl- XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更多的组件.(国人写) CBStoreHo

iOS网络请求框架:MKNetWorkKit的使用

MKNetWorkKit是由一个印度小伙子写的,是用于网络请求的库,支持ARC,我fork了一下,代码的网址这里给出. 本人fork作者代码地址(DoubleYi):https://github.com/DoubleYi/MKNetworkKit 作者源码地址(MugunthKumar):https://github.com/MugunthKumar/MKNetworkKit 作者关于类库介绍的地址(MugunthKumar):http://blog.mugunthkumar.com/produ

Android 各大网络请求库的比较及实战,android请求库实战

自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient.

常见网络请求库汇总

概述: 所有网络库的原理是: 网络请求一般是基于HttpURLConnection和HttpClient进行封装的,也有自己编写Socket实现的,比如ion和OkHttp:请求的执行一般是通过线程池来管理,异步请求得到结果,则通过回调接口接收:并且一般接收结果的回调都通过Handler去在主线程执行 几大网络请求库: Ion:Android Asynchronous Networking and Image Loading Volley:谷歌官方推出的网络请求和图片加载库 Retrofit:S

android 网络请求库的比较

源码请戳 一. 现有库和选择的库 HttpURLConnection:是Java中的标准类,是对Java中socket的封装. Httpclient:是Apache的开源框架,是对HttpURLConnection的封装. Okhttp:是Square公司开发的开源网络访问框架,是对socket的封装. 综上,Okhttp是目前比较适合的网络框架,根据业务需求进行适当的封装能够很好的适用于我们的需求.另外,该框架现在已经被广泛使用,比如著名的公司Facebook,他们在自己的Android客户端