依赖

 implementation files('libs/retrofit-2.9.0.jar')implementation("com.squareup.okhttp3:okhttp:4.8.1")// https://mvnrepository.com/artifact/com.android.volley/volleycompile group: 'com.android.volley', name: 'volley', version: '1.1.1'

Retrofit(底层封装okhttp)

package com.wintec.netframworktest;import android.os.Bundle;
import android.util.Log;import androidx.appcompat.app.AppCompatActivity;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TestRetrofit();}private void TestRetrofit() {Retrofit mRetrofit= new Retrofit.Builder().baseUrl("https://wap.peopleapp.com/article/").build();BookService mBookService = mRetrofit.create(BookService.class);Call<ResponseBody> mBookCall = mBookService.getBook(5852020);
//        Log.e("wy","服务器请求数据数据: "+   mBookCall.request().body().toString());mBookCall.enqueue(new Callback<ResponseBody>() {@Overridepublic void onResponse(final Call<ResponseBody> mCall, final Response<ResponseBody> mResponse) {Log.e("wy","服务器响应数据: "+  mResponse.toString());}@Overridepublic void onFailure(final Call<ResponseBody> mCall, final Throwable mThrowable) {Log.e("wy","网络异常原因: "+ mThrowable);}});}
}
package com.wintec.netframworktest;import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;public interface BookService {@GET("5933922/{id}")Call<ResponseBody> getBook(@Path("id") int id);}

Okhttp:同步调用,异步调用

package com.wintec.netframworktest;import android.os.Bundle;
import android.util.Log;import java.io.IOException;import androidx.appcompat.app.AppCompatActivity;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;public class OkhttpTestActivity extends AppCompatActivity {OkHttpClient client;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Request request = new Request.Builder().url("https://wap.peopleapp.com/article/5933922/5852020").build();client = new OkHttpClient();
//         OkHttp的同步请求会阻塞当前线程,因此不能在UI线程中请求,需要开启子线程,在子线程中发送请求。//         new Thread(new Runnable() {
//             @Override
//             public void run() {
//                 try {
//                     Log.e("wy","okhttp同步请求返回: "+ client.newCall(request).execute().toString());
//                 } catch (IOException mE) {
//                     mE.printStackTrace();
//                 }
//             }
//         }).start();//         异步请求Call call=client.newCall(request);call.enqueue(new Callback() {@Overridepublic void onResponse(Call call, Response response) throws IOException {Log.e("wy","okhttp异步请求response返回:"+response.toString());}@Overridepublic void onFailure(Call call, IOException e) {Log.e("wy","okhttp异步请求异常:"+e);}});}}

Volley

package com.wintec.netframworktest;import android.os.Bundle;
import android.util.Log;import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;import androidx.appcompat.app.AppCompatActivity;public class VolleyTestActivity extends AppCompatActivity {RequestQueue mQueue;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mQueue = Volley.newRequestQueue(getApplicationContext());loadGetStr("https://wap.peopleapp.com/article/5933922/5852020");}private void loadGetStr(String url) {StringRequest srReq = new StringRequest(Request.Method.GET, url,new StrListener(), new StrErrListener()) {protected final String TYPE_UTF8_CHARSET = "charset=UTF-8";// 重写parseNetworkResponse方法改变返回头参数解决乱码问题// 主要是看服务器编码,如果服务器编码不是UTF-8的话那么就需要自己转换,反之则不需要@Overrideprotected Response<String> parseNetworkResponse(NetworkResponse response) {
//                try {
//                    String type = response.headers.get(HTTP.CONTENT_TYPE);
//                    if (type == null) {
//                        type = TYPE_UTF8_CHARSET;
//                        response.headers.put(HTTP.CONTENT_TYPE, type);
//                    } else if (!type.contains("UTF-8")) {
//                        type += ";" + TYPE_UTF8_CHARSET;
//                        response.headers.put(HTTP.CONTENT_TYPE, type);
//                    }
//                } catch (Exception e) {
//                }return super.parseNetworkResponse(response);}};srReq.setShouldCache(true); // 控制是否缓存startVolley(srReq);}// 添加及开始请求private void startVolley(Request req) {// 设置超时时间// req.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 1, 1.0f));// 将请求加入队列mQueue.add(req);// 开始发起请求mQueue.start();}// Str请求成功回调private class StrListener implements Response.Listener<String> {@Overridepublic void onResponse(String arg0) {Log.e("wy","volley请求成功返回: "+ arg0);}}// 共用失败回调private class StrErrListener implements Response.ErrorListener {@Overridepublic void onErrorResponse(VolleyError arg0) {Log.e("wy","volley请求错误返回: "+ arg0);}}
}

Android网络框架选用(示例,已实际运行)Retrofit,okhttp,volley相关推荐

  1. ym—— Android网络框架Volley(终极篇)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103).谢谢支持! 没看使用过Volley的同学能够,先看看 Android网络框架Volley(体验篇) ...

  2. Android网络框架Volley项目实战-刘桂林-专题视频课程

    Android网络框架Volley项目实战-5257人已学习 课程介绍         使用Google 2013 I/O大会上发布的Volley请求框架做几个实战项目,归属地查询,QQ测试吉凶,天气 ...

  3. android网络框架

    https://www.zhihu.com/question/35189851 个人比较推荐Square开源组合,用Retrofit(目前已经是2.0+)+OkHttp基本上已经可以处理任何业务场景了 ...

  4. Android 网络框架 Retrofit2.0介绍、使用和封装

    前言 时至今日,Android的网络框架不再像之前那么到处都是,随着Google把 HttpClient直接删掉,似乎意味着Android越来越成熟.网络框架中的佼佼者Volley也不再那么光鲜,取而 ...

  5. Android 网络框架_常用的网络框架

    看了张哥(stormzhang)的博客之后,深有感触,又让我感慨了一番,而且发现张哥的博客英文跟汉字之间是有空格的,数字跟汉字之间也有空格,看起来很舒服很美观,张哥真的是把每一个细节都做的很好,所以身 ...

  6. Android 网络框架

    来源于:http://blog.csdn.net/t12x3456/article/details/9221611 Volley主页 https://android.googlesource.com/ ...

  7. Android网络框架Volley的快速使用

    一.基本使用 之前做Android开发都是使用学长自己封装好的网络请求框架,第三方网络框架也很多,网上搜索了一下,大多数人推荐使用 android-async-http okhttp Volley 其 ...

  8. Android网络框架-OkHttp3.0总结

    一.概述 OkHttp是Square公司开发的一款服务于android的一个网络框架,主要包含: 一般的get请求 一般的post请求 基于Http的文件上传 文件下载 加载图片 支持请求回调,直接返 ...

  9. 浅谈android网络框架——以课程格子的bug为例

    大家好! 在使用课程格子过程中 ,发现如果网络断开,点击树洞秘密,课程格子会因为无法从网络上刷新数据而崩溃掉.今天借解决此bug的为例,浅谈android的网络框架.

  10. Android网络框架volley学习(一)基本用法

    记录学习Android网络基础框架volley的过程. 首先我们需要将volley下载下来导入Android Studio中,我学习一个开源库,最好的方式就是将其源码以module的方式依赖到工程中去 ...

最新文章

  1. R语言可视化散点图、气泡图、动态气泡图、数据点重合的散点图、数据点计数图、抖动数据点图、基于lm方法或者loess方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注
  2. 小a的计算器(牛客签到题A)-简单模拟
  3. chroma_format_idc表示的色度采样结构
  4. [vue] vue组件会在什么时候下被销毁?
  5. SQLite多线程使用总结
  6. mysql5.6允许远程服务器访问数据库
  7. 页面优化指南(easyui页面优化方案
  8. php 二分查找字符串,php实现的二分查找算法示例
  9. STM8学习笔记---点亮LED灯
  10. 排序算法之——希尔排序分析
  11. 关闭jtag保留swd
  12. java文件输入流FileInputStream
  13. android 闪屏图片,Android的闪屏图像尺寸,以适应所有设备Android的闪屏图像尺寸,以适应所有设备(Andro...
  14. Mac 通过adb拉取dropbox中的内容
  15. 算法 - 递归实现汉诺塔(The Tower of Hanoi)
  16. Java poi api插入文字水印到docx文件
  17. ffmpeg 之 hls
  18. DocSearcher:文档搜索引擎
  19. 2018沈阳k(经典的约瑟夫环)
  20. 企业微信可以直接转账吗?

热门文章

  1. qq自定义diy名片代码复制_这个QQ技巧厉害了,艾特闪退QQ群表情霸屏无法撤回删除...
  2. 全球及中国智能X光安检机行业研究及十四五规划分析报告
  3. 宽字符处理函数函数与普通函数对照表
  4. 命令行方式实现QQ自动登录
  5. linux安装pcre错误,安装PCRE时出错
  6. LeetCode-121. 买卖股票的最佳时机(java)
  7. 香槟分校计算机专业毕业生去向,2019年伊利诺伊州立大学香槟分校计算机专业排名_托普仕留学...
  8. ADA4939 ADA4930
  9. P卡、worldfirst、连连跨境电商收款哪家好?
  10. 北京仁源欣生获200万美元天使轮融资,和玉资本领投