Android/Java网络加载框架Retrofit(一)初识

Android/Java网络加载框架Retrofit(一)初识

Retrofit是Square针对Android网络I/O设计的一套框架。Square官方介绍Retrofit:“A type-safe HTTP client for Android and Java”。Retrofit 2底层基于OkHttp实现,OkHttp依然是Square针对网络请求设计的一整套解决方案。Retrofit是基于Okhttp的一套RESTful http网络请求框架封装。Retrofit在github上的开源项目地址是:https://github.com/square/retrofit  
给出一个Retrofit网络加载简例,该简例实现一个简单的功能,从一个网络链接地址下载一张图片设置到ImageView里面。注意链接的拼接和注解使用。

上层Java代码:

package zhangphil.http;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ImageView;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.http.GET;
import retrofit2.http.Path;

public class MainActivity extends AppCompatActivity {
    private Call<ResponseBody> mCall;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ImageView imageView = (ImageView) findViewById(R.id.image);

        Retrofit mRetrofit = new Retrofit.Builder()
                .baseUrl("https://www.baidu.com/")
                .build();

        MyRetrofitService mRetrofitService = mRetrofit.create(MyRetrofitService.class);

        mCall = mRetrofitService.getImagesByName("bd_logo1.png");
        Log.d("请求的网络链接", String.valueOf(mCall.request().url()));

        mCall.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    byte[] bytes = response.body().bytes();
                    Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

                    imageView.setImageBitmap(bmp);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                t.printStackTrace();
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mCall.cancel();
    }

    private interface MyRetrofitService {
        @GET("img/{picName}")
        Call<ResponseBody> getImagesByName(@Path("picName") String picName);
    }
}



代码运行结果logcat输出:

10-16 11:21:29.685 6145-6145/zhangphil.http D/请求的网络链接: https://www.baidu.com/img/bd_logo1.png


不要忘记网络权限:

<uses-permission android:name="android.permission.INTERNET"/>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值