Okhttp 异步get post 请求

//使用前导入依赖
compile 'com.squareup.okhttp3:okhttp:3.9.0'

package lx.bwie.com.okhttp;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;

import com.nostra13.universalimageloader.core.DisplayImageOptions;

import java.io.IOException;
import java.util.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
    @SuppressLint("HandlerLeak")
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 1){
            String s = (String) msg.obj;
            show.setText(s);
            }
        }
    };
   // String TAG;
    private TextView show;
    private ListView lv;
    private DisplayImageOptions options;
   // String str = "";
    private List<User.DataBean> list ;

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

        show = (TextView) findViewById(R.id.show);
        lv = (ListView) findViewById(R.id.lv);

       /* options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)//进行内存缓存
                .cacheOnDisk(true)//进行sd卡缓存
                *//*.showImageOnLoading(R.drawable.ic_stub) // 设置正在下载中的图片
                .showImageForEmptyUri(R.drawable.ic_empty) //没有请求地址时
                .showImageOnFail(R.drawable.ic_error)//下载错误时*//*
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片质量
                .build();
*/
    }
    //异步get请求
    public void AsyncGet(View view){

        //异步get请求
        //创建okhttpClient 对象,两种任选数据
        //  OkHttpClient client = new OkHttpClient();

        OkHttpClient client = new OkHttpClient.Builder()

                // .addInterceptor(new 类())//添加一个拦截器

                .build();

      /*
      //传入参数
        //1.addHeader("name:","value")
        //2.header是覆盖
        //3.创建headers
        Headers headers = new Headers.Builder()
                .add("name", "value")
                .add("name", "value")
                .build();
                */

        //2.创建Request对象
        Request request = new Request.Builder()
                .get()//请求方式
                .url("http://120.27.23.105/product/getCatagory")//请求地址
                .build();

        //3.创建Call 对象
        Call call = client.newCall(request);
        //4.请求网络,execute同步,, enqueue 异步请求
        call.enqueue(new Callback() {
            //请求失败
            @Override
            public void onFailure(Call call, IOException e) {

            }
            //请求成功
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //response.body().string()本质上是读流的操作
                final  String res = response.body().string();
                Log.d("TAG",res);
                /**
                 * 获取到数据之后把数据展示到UI控件上,因为请求网络是在子线程中,而更新UI是在子线程中进行
                 * 可以用headler或者runOnUIThread
                 */
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        show.setText(res);

                     /*   Gson gson = new Gson();
                        User user = gson.fromJson(res, User.class);
                        Log.d("ZZZ",user.getData().size()+"");
                        list = user.getData();*/

                      //  lv.setAdapter(new MyAdapter());



                    }
                });

            }
        });
    }



   /* class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = View.inflate(MainActivity.this, R.layout.item_layout, null);
            ImageView img = view.findViewById(R.id.img);
            TextView tv = view.findViewById(R.id.tv);

            tv.setText(list.get(position).getName());
            ImageLoader.getInstance().displayImage(list.get(position).getIcon(),img,options);

            return view;
        }
    }*/

    //异步post 请求

    public void AsyncPost(View view){
        //1.创建okHttpClient对象,两种任选一种
        //OkHttpClient client = new OkHttpClient.Builder().build();
        OkHttpClient client = new OkHttpClient();
        //2.提供post请求需要的body对象
        FormBody body = new FormBody.Builder()
               .add("moblile","***********")
                .add("password","******")
                .build();
        //创建request 对象
        final Request request = new Request.Builder()
                .post(body)
                .url("http://120.27.23.105/user/login")
                .build();
        //创建Call对象
        Call call = client.newCall(request);
        //请求网络 post 异步请求 enqueue
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                //请求失败
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //请求成功
                //response.body().string()本质上是读取流的操作
                String res = response.body().string();
                //handler 发送请求,改变UI
                Message message = handler.obtainMessage();
                message.what = 1;
                message.obj = res;
                message.sendToTarget();

            }
        });
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值