一首先下载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方式

安卓学习----使用okHttp(get方式)---下载图片的更多相关文章

  1. 安卓学习----使用okHttp(POST方式)---登录

    工具类 package com.liunan.okhttpdemo3post.Utils; import java.io.IOException; import okhttp3.MediaType; ...

  2. 安卓学习之路 -- JAVA多线程下载

    代码没有优化,暂时先实现结果 package download; import java.io.File; import java.io.InputStream; import java.io.Ran ...

  3. 前端下载图片的N种方法

    前几天一个简单的下载图片的需求折腾了我后端大佬好几天,最终还是需要前端来搞,开始说不行的笔者最后又行了,所以趁着这个机会来总结一下下载图片到底有多少种方法. 先起个服务 使用expressjs起个简单 ...

  4. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  5. 从url下载图片--java与python实现方式比较

    从url下载图片--java与python实现方式比较 博客分类: 技术笔记小点滴 javapython图片下载  一.java的实现方式 首先读取图片 //方式一:直接根据url读取图片 priva ...

  6. Python学习---网页爬虫[下载图片]

    爬虫学习--下载图片 1.主要用到了urllib和re库 2.利用urllib.urlopen()函数获得页面源代码 3.利用正则匹配图片类型,当然正则越准确,下载的越多 4.利用urllib.url ...

  7. IOS开发-UI学习-根据URL显示图片,下载图片的练习(button,textfield,image view,url,data)

    编写一个如下界面,实现: 1.在文本输入框中输入一个网址,然后点击显示图片,图片显示到UIImageView中. 2.点击下载,这张显示的图片被下载到手机的Documents文件夹下的Dowmload ...

  8. Java学习笔记——IO操作之以图片地址下载图片

    以图片地址下载图片 读取给定图片文件的内容,用FileInputStream public static byte[] mReaderPicture(String filePath) { byte[] ...

  9. Python下载图片并保存本地的两种方式

    一:使用Python中的urllib类中的urlretrieve()函数,直接从网上下载资源到本地,具体代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...

随机推荐

  1. Android数据存储之Sqlite的介绍及使用

    前言: 本来没有打算整理有关Sqlite数据库文章的,最近一直在研究ContentProvider的使用,所有觉得还是先对Sqlite进行一个简单的回顾,也方便研究学习ContentProvider. ...

  2. BFC之宽度自适应布局篇

    说到自适应布局,我们曾在“抛砖引玉之宽度自适应布局”一文中学习过.当时的核心思想主要是利用float+margin的形式.利用块状元素的流体特性,然后计算出float元素的宽度,并赋予到块状元素的相应 ...

  3. iOS开发之微信聊天页面实现

    在上篇博客(iOS开发之微信聊天工具栏的封装)中对微信聊天页面下方的工具栏进行了封装,本篇博客中就使用之前封装的工具栏来进行聊天页面的编写.在聊天页面中主要用到了TableView的知识,还有如何在俩 ...

  4. Notepad++使用小结

    还是那句话“工欲善其事必先利其器”用Notepad++也有一段时间了,也积累了一些东西,写篇博文与大家分享一下使用Notepad++的一些心得.  简单的说一下Notepad++是什么东西吧,Note ...

  5. 缓存Cookie、session、localStorage的区别

    cookie Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机.当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文 ...

  6. mysql乐观锁总结和实践--转

    原文地址:http://chenzhou123520.iteye.com/blog/1863407 上一篇文章<MySQL悲观锁总结和实践>谈到了MySQL悲观锁,但是悲观锁并不是适用于任 ...

  7. 1Z0-053 争议题目解析212

    1Z0-053 争议题目解析212 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 212.Note the following parameters settings in you ...

  8. 用Kotlin改写PHP程序是什么样的体验

    学Kotlin其实要看:http://kotlinlang.org/docs/kotlin-docs.pdf 在线版是不完整的!!!少了一些章节,会有点难看懂后面的文档. 我选择了WordPress里 ...

  9. table中设置border的问题

    今天在修改table样式的时,想给tr加个border-bottom,一开始用的颜色比较浅,我还以为看电脑太久眼花,结果换了比较深的颜色后,border-bottom真的没有出来.   忽然想起在ht ...

  10. MySQL使用if判断

    select *,if(sva=1,"男","女") as ssva from taname where sva<>"" 12. ...