例:
加权限:
<uses-permission android:name="android.permission.INTERNET"/>
加依赖:
compile 'com.squareup.okhttp3:okhttp:3.9.0'
主方法类:
public class MainActivity extends AppCompatActivity { private String Strurl = "http://img.1985t.com/uploads/attaches/2017/12/141013-eSnS9sO.jpg"; //使用封装的okhttp private OkHttpUtils okHttpUtils = new OkHttpUtils().getInstance(); private Button btn; private ImageView img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = findViewById(R.id.btn); img = findViewById(R.id.img); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//Strurl是网址 okHttpUtils.asyncJsonStringByURL2(Strurl, new OkHttpUtils.Func2() { @Override public void onResponse(byte[] result) { Bitmap bitmap = BitmapFactory.decodeByteArray(result, 0, result.length); img.setImageBitmap(bitmap); } }); } }); // //例:private String Path = "http://wangzhi。。。。"; // //Path是网址 // //通过textview来展示 // //textview = findViewById(R.id.textview); // okHttpUtils.asyncJsonStringByURL(Path, new OkHttpUtils.Func1() { // @Override // public void onResponse(String result) { // textview.setText(result); // } // }); } }
activity_main 布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/btn" android:text="点击" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="13dp" /> <ImageView android:id="@+id/img" android:layout_width="300dp" android:layout_height="400dp" android:layout_below="@+id/btn" android:layout_centerHorizontal="true" android:layout_marginTop="12dp" /> </RelativeLayout>
OkHttpUtils 类:
public class OkHttpUtils { //定义成员变量 private final OkHttpClient mClient; private static Handler mHandler = null; private static OkHttpUtils sUtils; //使用构造方法,完成初始化 OkHttpUtils(){ mClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS)//设置的链接的超时时间 .readTimeout(10,TimeUnit.SECONDS)//设置读取超时时间 .writeTimeout(10,TimeUnit.SECONDS)//设置写入超时时间 .build(); mHandler = new Handler(); } /** * 设置外部调用方法 *使用单利模式,暴露一个方法,给外界提供一个对象 * @return */ public static OkHttpUtils getInstance(){ if (sUtils == null){ sUtils = new OkHttpUtils(); } return sUtils; } ////定义接口 interface Func1{ void onResponse(String result); } interface Func2{ void onResponse(byte[] result); } interface Func3{ void onResponse(JSONObject jsonObject); } ///////////////////////Func2图片/////////////////////////////////////// //是编写代码运行到主线程 //处理网路请求成功的方法,返回的结果是Json字符串 private static void onSuccessJsonStringMethod(final byte[] result,final Func2 callBack){ mHandler.post(new Runnable() { @Override public void run() { if (callBack != null){ callBack.onResponse(result); } } }); } //暴露给外界调用的方法 /** * 请求指定的URL,返回的结果是Json字符串 */ public void asyncJsonStringByURL2(String url, final Func2 callBack){ final Request request = new Request.Builder().url(url).build(); mClient.newCall(request).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) throws IOException { onSuccessJsonStringMethod(response.body().bytes(),callBack); } @Override public void onFailure(Call call, IOException e) { } }); } ///////////////////////Func1文字/////////////////////////////////////// //是编写代码运行到主线程 //处理网路请求成功的方法,返回的结果是Json字符串 private static void onSuccessJsonStringMethod(final String jsonValue,final Func1 callBack){ mHandler.post(new Runnable() { @Override public void run() { if (callBack != null){ callBack.onResponse(jsonValue); } } }); } //暴露给外界调用的方法 /** * 请求指定的URL,返回的结果是Json字符串 */ public void asyncJsonStringByURL(String url, final Func1 callBack){ final Request request = new Request.Builder().url(url).build(); mClient.newCall(request).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) throws IOException { onSuccessJsonStringMethod(response.body().string(),callBack); } @Override public void onFailure(Call call, IOException e) { } }); } }