关于OkHttp有好多不同的方法,就比如鸿洋的方法等,在这里我用的最简单的方法
首先我们添加依赖:
compile 'com.squareup.okhttp3:okhttp:3.4.2'
然后设置联网权限
在往下就是要写方法:
第一个是okhttp请求数据存到内存并打印:
public void okhttp_ok(){ new Thread(){ @Override public void run() { super.run(); //缓存大小 int cachheSize=10*1024*1024;//10MiB //创建Cache对象,文件存放私有目录 Cache cache=new Cache(getCacheDir(),cachheSize); //创建okhttpclidnt对象,文件放到私有目录 OkHttpClient okHttpClient=new OkHttpClient.Builder().cache(cache).build(); Request.Builder builder=new Request.Builder(); Request.Builder url=builder.url("网络接口"); final Request request=url.build(); //创建call对象 Call call=okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string=request.body().toString(); } }); } }; }第二类就是okhttp的post请求:/** * 使用post进行表单上传,完成登录 *///Button点击事件 public void login(View view){ final String qq=mEt_qq.getText().toString().trim(); final String pwd=mEt_pwd.getText().toString().trim(); if (TextUtils.isEmpty(qq)||TextUtils.isEmpty(pwd)){ Toast.makeText(MainActivity.this,"不能为空",Toast.LENGTH_LONG).show(); return; } new Thread(){ private OkHttpClient okHttpClient; private Request request; private FormBody formBody; @Override public void run() { super.run(); okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS)//设置连接超时时间 .readTimeout(10, TimeUnit.SECONDS)//设置读取超是时间 .writeTimeout(10, TimeUnit.SECONDS)//设置写入超时时间 .build(); //表单对象 formBody = new FormBody.Builder() .add("qq", qq) .add("pwd", pwd) .build(); //创建请求对象 request = new Request.Builder() .post(formBody) .url(path)//path是请求的接口 .build(); Call call=okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { final String s=response.body().string(); runOnUiThread(new Runnable() { @Override public void run() {//给Textview控件赋值
mTv_status.setText(s); } }); } }); } }.start(); }还有第三类请求图片:/** * 根据点击事件获取网络上的图片资源 *///Button点击事件 public void Picture_okhttp_bt(View view){ new Thread(){ @Override public void run() { super.run(); //注意:采用链式调用发,只有okhttp3.0可用 OkHttpClient client=new OkHttpClient.Builder().build(); //创建请求对象,设置URL final Request request=new Request.Builder().url(path).build();//path图片地址 Call call=client.newCall(request); call.enqueue(new Callback() { private byte[] bytes; @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { bytes = response.body().bytes(); final Bitmap bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length); runOnUiThread(new Runnable() { @Override public void run() {//给图片控件添加图片 mImageView_okhttp.setImageBitmap(bitmap); } }); } }); } }.start(); }