• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 安卓学习----使用okHttp(get方式)---下载图片,

安卓学习----使用okHttp(get方式)---下载图片,

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了安卓学习----使用okHttp(get方式)---下载图片,等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

安卓学习----使用okHttp(get方式)---下载图片,


一首先下载Jar包

https://github.com/square/okhttp

 

如果使用android studio只需要加入依赖

compile 'com.squareup.okhttp3:okhttp:3.2.0'

 

二--下载一张图片并显示

使用的是hanlder的方式

package com.liunan.okhttpdemo2;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.IOException;
import java.io.InputStream;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;

public class MainActivity extends AppCompatActivity {


    private static final int ERROR = 1;
    private static final int SUCCESS = 2 ;
    private String url = "http://192.168.1.102:8080/img/a.jpg";
    private ImageView mIv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

    }

    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case SUCCESS:
                    mIv.setImageBitmap((Bitmap) msg.obj);
                    break;

                case ERROR:

                    Toast.makeText(MainActivity.this, "请求超时", Toast.LENGTH_SHORT).show();

                    break;
            }
        }
    };

    /**
     * 初始化 组件
     */
    private void initView() {

        mIv = (ImageView) findViewById(R.id.main_iv);
    }


    /**
     * 点击获取图片
     */
    public void getPic(View v){


        new Thread(){
            @Override
            public void run() {
                //获取okHttp对象get请求,

                try {
                    OkHttpClient client = new OkHttpClient();

                    //获取请求对象
                    Request request = new Request.Builder().url(url).build();

                    //获取响应体

                    ResponseBody body = client.newCall(request).execute().body();

                    //获取流
                    InputStream in = body.byteStream();
                    //转化为bitmap
                    Bitmap bitmap = BitmapFactory.decodeStream(in);

                    //使用Hanlder发送消息
                    Message msg = Message.obtain();

                    msg.what = SUCCESS;
                    msg.obj = bitmap;

                    handler.sendMessage(msg);




                } catch (IOException e) {
                    e.printStackTrace();
                    //失败
                    Message msg = Message.obtain();
                    msg.what = ERROR;

                    handler.sendMessage(msg);
                }


            }
        }.start();
    }


}

也可以把网络请求写为一个工具类,

package com.liunan.okhttpdemo2;

import java.io.IOException;
import java.io.InputStream;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
 * Created by 刘楠 on 2016-03-27.
 */
public class OkHttpUtils {

    OkHttpClient client = new OkHttpClient();

    /**
     * 获取流
     * @param url  请求地址
     * @return  输入流
     */
    public InputStream getInpuStream(String url) throws IOException {
        //设置 请求
        Request request = new Request.Builder()
                .url(url).build();


        //获取行响应

        InputStream in = client.newCall(request).execute().body().byteStream();

        return in;


    }

    /**
     * 返回字符串
     * @param url
     * @return   返回字符串
     * @throws IOException
     */
  public String getString(String url) throws IOException {
        //设置 请求
        Request request = new Request.Builder()
                .url(url).build();


        //获取行响应

      Response response = client.newCall(request).execute();

      return response.body().string();


    }

}

 

get方式

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 安卓学习----使用okHttp(get方式)---下载图片,

相关文章

  • 2017-05-26AsyncTask注意事项,面试技巧和注意事项
  • 2017-05-26Android之Pull解析XML,androidpullxml
  • 2017-05-26Android表单UI及相应控件的事件处理,android表单ui控件
  • 2017-05-26基于Nginx实现10万+并发,你应该做的Linux内核优化
  • 2017-05-26android:SpannableString的应用,TextView中某些文字的点击事件
  • 2017-05-26Jar mismatch错误的解决,jarmismatch错误
  • 2017-05-26android shareSDK实现第三方分享,androidsharesdk
  • 2017-05-26Google官方MVP模式示例项目解析 todo-mvp,mvptodo-mvp
  • 2017-05-26Android 手机卫士--设置密码对话框,android设置密码
  • 2017-05-26类似微信朋友圈,点击+号图片,可以加图片,信朋友圈

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Linux内核系列—C语言中内嵌汇编 asm __volatile__,asm__volatile_
    • Lambda表达式在Kotlin中怎样工作的:setOnClickListener的转换(KAD 18),180
    • Android--activity切换时的动画,android--activity
    • 使用Chrome远程调试GenyMotion上的WebView程序,genymotionwebview
    • RecyclerView在软键盘弹出时自动调整内容技巧,recyclerview技巧
    • AppManager,androidappmanager
    • URL转换成二维码,url
    • 3.5 监听EditText的内容变化
    • 手机安全卫士——软件管理-用户程序和系统程序,安全卫士系统程序
    • Android Studio中使用AIDL进行进程间通信

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有