Android常用开源库———————————OkHttp的使用方法

OkHttp是一个优秀的网络通信库,GitHub项目主页地址

基本使用

在项目中中添加OkHttp库的依赖。.

implementation("com.squareup.okhttp3:okhttp:3.12.0")

OkHttp进行Get请求

//创建一个OkHttpClient的实例
OkHttpClient client = new OkHttpClient();
//创建一个Request对象
Request request = new Request.Builder().build;

//通过url()方法来设置目标的网络地址
Request request = new Request.Builder().url("http://www.baidu.com").build();
//调用newCall()方法来创建一个Call对象
Response response = client.newCall(request).exute();
//Response对象就是服务器返回的数据,通过如下写法得到返回的具体内容
String responseData = response.body().string()

OkHttp进行Post请求

//构建一个RequestBody对象存放待提交的参数
RequestBody requestBody = new FormBody.Builder().add("username","admin").add("password","12345").build();
//调用post()方法
Request request = new Request.Builder().uirl("http://www.baidu.com").post(requestBody).build();

接下来的操作和Get请求一样

同步请求时,需要开启子线程;异步请求时调用enqueue,无需开启子线程。

public class MainActivity extends AppCompatActivity  implements View.OnClickListener{

    TextView responseText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button  sendRequest = (Button) findViewById(R.id.send_request);
        Button sendAsyncRequest = (Button) findViewById(R.id.send_asyncRequest);
        responseText = (TextView) findViewById(R.id.response_text);
        sendRequest.setOnClickListener(this);
        sendAsyncRequest.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.send_request:
                sendRequestWithOkHttp();
                break;

            case R.id.send_asyncRequest:
                sendAsyncRequestWithOkHttp();
                break;

            default:
                break;
        }
    }

    private void sendAsyncRequestWithOkHttp() {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url("http://www.baidu.com").build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Toast.makeText(MainActivity.this,"get failed", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String res = response.body().string();
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        responseText.setText(res);
                    }
                });
            }
        });
    }

    private void sendRequestWithOkHttp() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try{
                    OkHttpClient client = new OkHttpClient();
                    Request request = new Request.Builder().url("http://www.baidu.com").build();
                    Response response = client.newCall(request).execute();
                    String responseData = response.body().string();
                    showResponse(responseData);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    private void showResponse(final String response) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                responseText.setText(response);
            }
        });
    }
}

原文地址:https://www.cnblogs.com/kyun/p/10012908.html

时间: 2024-08-05 06:02:56

Android常用开源库———————————OkHttp的使用方法的相关文章

Android常用开源项目

Android常用开源项目 Android   2014-05-23 16:39:43 发布 您的评价:       4.3   收藏     24收藏 Android开源项目第一篇--个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.其他Android开源项目第二篇--工具库篇  包括依赖注入.图片缓存.网络相关.数据库ORM工具包.Android公

Android常用开源框架Proguard混淆解决方案

最近项目终于要上线了,于是准备对App进行混淆和加固, 但项目引入的开源库有点多,混淆时报了一堆错误,在参考了很多资料后,在前人基础上整理了一个常用开源库proguard rules的列表,以后就不用再次折腾了 项目git地址: https://github.com/offbye/Android-ProGuardRules 参考了 http://mjiayou.com/2015/06/24/third-proguard-rules/ 版权声明:本文为博主原创文章,转载请保留出处http://bl

android UI开源库

. ActionBarSherlock ActionBarSherlock是一个独立的Android设计库,可以让Android 2.x的系统也能使用ActionBar.此 外,ActionBarSherlock还能够允许开发者只通过一个API,就可以方便地使用和设计ActionBar. ActionBarSherlock还可以自主判断选择并调用原生Action Bar还是扩展ActionBar.如果在Android 3.x以上使 用ActionBarSherlock,它还会调用系统原生的Act

Android开发之常用开源库直接拿来用

1.from  代码家 整理比较好的源码连接 *************************************************************************************************************************************************************************** http://blog.zhan-dui.com/?page_id=60 感谢 "代码家"整理 一.

Android 第三方开源库收集整理(转)

原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 不定期的更新 这篇文章. Android下的优秀开发库数不胜数,在本文中,我列举的多是开发流程中最常用的一些.如果你还想了解更多的Android开源库,可以关注我的博

安卓常用开源库

GitHub上前100名Android 开源库. 项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native, 该框架结合了 Web 应用和 Native 应用的优势, 可以使用 JavaScript 来开发 iOS 和 Android 原生应用 2.Android-Universal-Image-Loader ImageLoader 是最早开源的 Andro

Android 网络开源库之-retrofit的解析详解

前言 当前的网络开源库有许多,如volley,okhttp,retrofit等,这三个库当前是比较火的,其中,okhttp和retrofit由square团队开发.关于这三个库的区别,请移步stackoverflow或者知乎查看.开发过程中选择什么样的开源库需要更具我们APP来做出选择.我们选出stackoverflow中的一段话来看下. 上面说,需要与web service通信的时候,我们使用retrofit.百度百科 web service介绍,那么我们见天就来了解下retrofit.

iOS开发>学无止境 - 异步图片加载优化与常用开源库分析

作者:罗轩(@luoyibu) 网址:http://www.jianshu.com/p/3b2c95e1404f 1. 网络图片显示大体步骤:   下载图片 图片处理(裁剪,边框等) 写入磁盘 从磁盘读取数据到内核缓冲区 从内核缓冲区复制到用户空间(内存级别拷贝) 解压缩为位图(耗cpu较高) 如果位图数据不是字节对齐的,CoreAnimation会copy一份位图数据并进行字节对齐 CoreAnimation渲染解压缩过的位图 以上4,5,6,7,8步是在UIImageView的setImag

Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果

大家好!过完年回来到现在差不多一个月没写文章了,一是觉得不知道写哪些方面的文章,没有好的题材来写,二是因为自己的一些私事给耽误了,所以过完年的第一篇文章到现在才发表出来,2014年我还是会继续在CSDN上面更新我的博客,欢迎大家关注一下,今天这篇文章主要的是介绍下开源库StickyGridHeaders的使用,StickyGridHeaders是一个自定义GridView带sections和headers的Android库,sections就是GridView item之间的分隔,headers