精华内容
下载资源
问答
  • okhttp入门

    2020-10-13 09:52:32
    https://blog.csdn.net/u013651026/article/details/79738059

    https://blog.csdn.net/u013651026/article/details/79738059

    展开全文
  • OkHttp入门

    2017-05-02 10:42:52
    OkHttp是一个强大实用的网络请求框架,由伟大的Square创建,因为我们做安卓开发的,一定是用过Square发布的开源框架。 官网地址http://square.github.io/okhttp/,对应 Github地址:...
    OkHttp是一个强大实用的网络请求框架,由伟大的Square创建,因为我们做安卓开发的,一定是用过Square发布的开源框架。
     官网地址http://square.github.io/okhttp/,对应 Github地址:https://github.com/square/okhttp
    
    public class OkHttpActivity extends AppCompatActivity {
        private final static String TEST_GET_URL = "https://api.github.com/users/ldm520/repos";
        private static final String TEST_POST_URL = "http://192.168.2.13:8083/app";
        //请求结果数据展示
        private TextView result_tv;
        private final static int REQUEST_SUCCESS = 0;
        private final static int REQUEST_FAIL = 1;
    
        private Handler mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                switch (msg.what) {
                    case REQUEST_SUCCESS://响应成功
                        String result = msg.obj.toString();
                        if (!TextUtils.isEmpty(result)) {
                            result_tv.setText("响应结果:\n");
                            result_tv.append(result);
                        }
                        break;
                    case REQUEST_FAIL://响应失败
                        Toast.makeText(OkHttpActivity.this, "网络请求失败", Toast.LENGTH_LONG).show();
                        break;
                }
            }
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_ok_http);
            result_tv = (TextView) findViewById(R.id.result_tv);
        }
    
        /**
         * @description 使用OkHttp进行GET请求
         * @author ldm
         * @time 2017/5/2 10:02
         */
        public void httpGet(View view) {
            //创建okHttpClient对象
            OkHttpClient client = new OkHttpClient();
            //创建一个请求,传入请求地址
            Request request = new Request.Builder()
                    .url(TEST_GET_URL)
                    .build();
            //请求响应
            client.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    //请求失败
                    mHandler.sendEmptyMessage(REQUEST_FAIL);
                }
    
                //响应成功
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    Message msg = new Message();
                    msg.obj = response.body().toString();
                    msg.what = REQUEST_SUCCESS;
                    mHandler.sendMessage(msg);
                }
            });
    
        }
    
    
        /**
         * @description 使用OkHttp进行POST请求
         * @author ldm
         * @time 2017/5/2 10:03
         */
        public void httpPost(View view) {
            OkHttpClient client = new OkHttpClient();
            //构建请求体,传递参数
            RequestBody body = new FormBody.Builder()
                    .add("userName", "ldm")
                    .add("passWord", "123456")
                    .build();
            Request request = new Request.Builder()
                    .url(TEST_POST_URL)
                    .addHeader("", "")//这里添加Header信息
                    .post(body)//添加请求参数
                    .build();
            client.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    //请求失败
                    mHandler.sendEmptyMessage(REQUEST_FAIL);
                }
    
                //响应成功
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    Message msg = new Message();
                    msg.obj = response.body().toString();
                    msg.what = REQUEST_SUCCESS;
                    mHandler.sendMessage(msg);
                }
            });
        }
    }
    

    记得添加网络权限。

    展开全文
  • okhttp入门教程

    2020-02-23 11:35:20
    循序渐进,分别介绍okhttp的使用,实现原理 以及 里面所使用到的设计模式,帮助同学们更好地理解里面的知识
  • okhttp入门教程 Android研发工程师。南京邮电大学毕业,曾就任于创...

    扫码下载「CSDN程序员学院APP」,1000+技术好课免费看

    APP订阅课程,领取优惠,最少立减5元 ↓↓↓

    订阅后:请点击此处观看视频课程

     

    视频教程-okhttp入门教程-Android

    学习有效期:永久观看

    学习时长:62分钟

    学习计划:2天

    难度:

     

    口碑讲师带队学习,让你的问题不过夜」

    讲师姓名:黄俊东

    移动客户端工程师

    讲师介绍:Android研发工程师。南京邮电大学毕业,曾就任于创新工场,现就任于某知名大型移动互联网公司,CSDN博客讲师。《libGDX移动游戏开发从入门到精通》作者。熟悉Java Web、Android、游戏开发,开发并上线了多个app。

    ☛点击立即跟老师学习☚

     

    「你将学到什么?」

    循序渐进,分别介绍okhttp的使用,实现原理 以及 里面所使用到的设计模式,帮助同学们更好地理解里面的知识

     

    「课程学习目录」

    第1章:基本使用
    1.课程简介
    2.环境的搭建
    3.同步Get请求
    4.异步Get请求
    5.Post表单请求
    6.Post方式提交String
    7.Post方式提交流
    8.Post方式提交文件
    9.LogInterceptor的使用——查看请求的时间(1)
    10.LogInterceptor的使用——查看请求的时间(2)
    第2章:okhttp的实现原理
    1.okhttp框架的执行流程
    2.OkHttpClient的解析
    3.Request的解析
    4.Call的解析
    5.RealCall的解析
    6.NamedRunnable的解析
    7.Dispatcher的解析
    8.okhttp中的拦截器
    9.BridgeInterceptor的解析
    第3章:OkHttp中的设计模式
    1.okhttp中用到的设计模式串讲

     

    7项超值权益,保障学习质量」

    • 大咖讲解

    技术专家系统讲解传授编程思路与实战。

    • 答疑服务

    专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。

    • 课程资料+课件

    超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)

    • 常用开发实战

    企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。

    • 大牛技术大会视频

    2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。

    • APP+PC随时随地学习

    满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。

     

    「什么样的技术人适合学习?」

    • 想进入互联网技术行业,但是面对多门编程语言不知如何选择,0基础的你
    • 掌握开发、编程技术单一、冷门,迫切希望能够转型的你
    • 想进入大厂,但是编程经验不够丰富,没有竞争力,程序员找工作难。

     

    「悉心打造精品好课,2天学到大牛3年项目经验」

    【完善的技术体系】

    技术成长循序渐进,帮助用户轻松掌握

    掌握Android知识,扎实编码能力

    【清晰的课程脉络】

    浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。

    【仿佛在大厂实习般的课程设计】

    课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。

     

    「你可以收获什么?」

    okhttp的使用

    设计模式

     

    展开全文
  • OKHttp入门使用

    2020-10-11 18:13:03
    创建新项目,先导包,修改build.gradle文件,加入okhttp的包: dependencies { ... implementation 'com.squareup.okhttp3:okhttp:3.4.1' ... } http访问网站需要先创建一个配置文件,在res/xml目录下创建一个...

    前面工作

    创建新项目,先导包,修改build.gradle文件,加入okhttp的包:

    dependencies {
        ...
        implementation 'com.squareup.okhttp3:okhttp:3.4.1'
        ...
    }

    http访问网站需要先创建一个配置文件,在res文件夹处右键选择创建一个Android Resource Directory文件夹,类型为xml,然后在这个xml目录下创建一个xml文件,命名为network_security_config.xml,内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true" />
    </network-security-config>

    然后修改配置文件AndroidManifest.xml,先声明网络权限,再在application块中的android:networkSecurityConfig属性引用network_security_config.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.okhttpdemo">
    
        <uses-permission android:name="android.permission.INTERNET"/>
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:networkSecurityConfig="@xml/network_security_config"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    这样就完成基本配置了。

    使用okhttp

    需要重点注意的是:okhttp的请求应该放到子线程中进行,放到主线程进行会报错。

    使用okhttp进行Get请求:

    //初始化一个OkHttpClient对象
    OkHttpClient client = new OkHttpClient();
    //设置url,构建Request对象
    Request request = new Request.Builder().url("http://www.baidu.com").build();
    //对request进行封装
    final Call call = client.newCall(request);
    //同步获取返回的数据,会阻塞主线程
    Response response = call.execute();
    System.out.println("返回的数据是"+response.body().string());
    //异步获取返回的数据,需要实现回调接口,回调方法是在子线程执行的,
    //需要特别注意更新UI的行为要切换到主线程再进行
    call.enqueue(new Callback() {
         @Override
         public void onFailure(Call call, IOException e) {
            ...
         }
    
         @Override
         public void onResponse(Call call, Response response) throws IOException {
            ... 
            System.out.println("返回的数据是"+response.body().string());                                         
         }
      );

    使用okhttp提交Post请求:

    这里模拟账号登录,将账号和密码作为数据提交给服务器。

    //初始化okhttpClient
    OkHttpClient client = new OkHttpClient();
    //构建requestBody
    MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
    //向requestBody中添加键值对数据,即账密
    requestBody.addFormDataPart("account","admin");
    requestBody.addFormDataPart("password","12345");
    //构建request对象
    Request request = new Request.Builder().url("http://服务器的域名或IP/login.php").post(requestBody.build()).build();
    //封装request对象
    final Call call = client.newCall(request);
    //异步获取返回的数据并处理
    call.enqueue(new Callback() {
         @Override
         public void onFailure(Call call, IOException e) {
               runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                    Toast.makeText(MainActivity.this,"网络错误",Toast.LENGTH_SHORT).show();
                    }
               });
         }
    
         @Override
         public void onResponse(Call call, final Response response) throws IOException {
                runOnUiThread(new Runnable() {
                     @Override
                     public void run() {
                            try {
                                    //假设登录成功,弹框登录成功,跳转到某页面...                                
                                    Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
                            } catch (IOException e) {
                                    e.printStackTrace();
                            }
                    }                 
                });
         }
         });

    使用okhttp上传文件:

    1.先导入okio的jar包

        implementation 'com.squareup.okio:okio:1.11.0'
    

    2.获取读写存储卡权限

    3.在安卓O版本,即使获得了权限,如果试图访问非公共目录或本APP文件夹下的文件时,权限仍会被拒绝。具体解决办法参考:https://blog.csdn.net/li18518326892/article/details/68486005

    具体实现:

    //先在存储卡目录下放置一张图片1.png
    File file = new File(Environment.getExternalStorageDirectory(), "1.png");
    if (!file.exists()){
        runOnUiThread(new Runnable() {
             @Override
             public void run() {
                 Toast.makeText(MainActivity.this, "文件不存在", Toast.LENGTH_SHORT).show();
             }
        });                         
        return ;
    }
    RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);
    Request request = new Request.Builder().url("http://服务器域名或IP地址/upload.php").post(requestBody).build();
    //后面跟之前的post提交数据类似,代码就省略了。。。

    使用okhttp下载文件:

    下载图片,然后另存到download目录下

    Request request = new Request.Builder().url("http://域名或IP/1.png").get().build();
    final Call call = client.newCall(request); 
    
    call.enqueue(new Callback() {
                            @Override
                            public void onFailure(Call call, IOException e) {
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        Toast.makeText(MainActivity.this,"网络错误",Toast.LENGTH_SHORT).show();
                                    }
                                });
                            }
    
                            @Override
                            public void onResponse(Call call, final Response response) throws IOException {
                                   //拿到字节流
                                   InputStream is = response.body().byteStream();
    
                                   int len = 0;
                                   //存储到download目录下
                                   File file  = new File(Environment.getExternalStorageDirectory()+"/Download/", "okhttpDemo.png");
                                   FileOutputStream fos = new FileOutputStream(file);
                                   byte[] buf = new byte[128];
    
                                   while ((len = is.read(buf)) != -1){
                                         fos.write(buf, 0, len);
                                   }
    
                                   fos.flush();
                                   //关闭流
                                   fos.close();
                                   is.close();
                            }
                        });

     

    展开全文
  • OKHttp入门详解

    2020-10-24 11:40:09
    4、OKHttp详解 https://www.jianshu.com/p/9aa969dd1b4d 在AndroidManifest.xml中加入联网权限 <uses-permission android:name="android.permission.INTERNET" /> 1、拿到OkHttpClient对象 OkHttpClient ...
  • Android OkHttp入门

    2016-10-28 15:47:16
    最近半年来身边开发的朋友越来越多的提到OkHttp,上谷歌百度一下,确实OkHttp成了时下最火的HTTP框架,于是我也开始放下Volley,转而关注OkHttp,五一期间仔细看了官方WiKi介绍(我喜欢学习官方的文档),现在把自己...
  • OkHttp 入门

    2017-02-09 11:24:00
    OkHttp是一个HTTP &amp; HTTP2的客户端,能够用来进行Android 和 Java 开发。 HTTP是现代应用的最基本的网络环境。让你的HTTP更加有效的工作能够让你的东西加载更快而且节省带宽。 OkHttp默认是一个高效的HTTP...
  •  Protocol(接口):列举Okhttp支持的协议  ConnectionSpec:Connection中的一些常量和变量  ConnectionPool:管理Connection  OkHttpClient:  Interceptor(接口):过滤器,构成过滤器链  ...
  • OkHttp快速入门

    2019-06-27 17:12:03
    OkHttp快速入门 有时间了再详细介绍,直接上代码 一. 具体操作 1.1 具体操作 引入依赖 在Maven 项目中pom.xml中引入依赖 <!-- OKHttp3依赖 --> <dependency> <groupId>...
  • OkHttp框架入门笔记

    2019-05-26 17:05:57
    OkHttp框架入门笔记OkHttp框架入门笔记OkHttp框架概述OkHttp对安卓的版本需求导入OkHttp框架依赖OkHttp框架简单例子对OkHttp进行简单的封装参考 OkHttp框架入门笔记 本篇文章是我在学习 @慕课网【Android网络框架-...
  • OkHttp3.0入门教程

    2016-11-17 15:43:57
    OkHttp3.0的入门教程
  • OkHttp3入门介绍

    千次阅读 2018-07-12 12:40:06
    OkHttp是一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,本文主要介绍OkHttp3的基本使用方法。 官网:http://square.github.io/okhttp/ Github:https://github.com/square/ok...
  • okhttp使用入门

    2016-01-01 10:59:11
    获取client在okhttp官方说明中建议只使用一个全局OkHttpClient对象。所以我们这样创建一个OkHttpClient对象:final static OkHttpClient client = new OkHttpClient();这个okhttp client会获取你的请求,发送它给...
  • 简单实用的OkHttp3入门精简教程

    千次阅读 2017-08-15 15:46:12
    简单,实用的OkHttp3入门精简教程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,548
精华内容 1,819
关键字:

okhttp入门