OkHttp,get、post请求方法,封装get请求方法

 拦截器

OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request request = chain.request();
                return chain.proceed(request);
            }
        }).build();
package soexample.umeng.com.shopcar.utils;

import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.util.Log;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

/**
 * author:AbnerMing
 * date:2018/10/24
 */
public class OkHttpUtils {
    private OkHttpUtils(){}
    private static OkHttpUtils mOkHttpUtils;

    public synchronized static OkHttpUtils getOkHttpUtils(){
        if(mOkHttpUtils==null){
            mOkHttpUtils=new OkHttpUtils();
        }
        return mOkHttpUtils;
    }


    //get请求
    public OkHttpUtils get(String url){
        final Message message=Message.obtain();
        OkHttpClient okHttpClient = null;
        try {
            okHttpClient = getOkHttpClient();
        } catch (IOException e) {
            e.printStackTrace();
        }
        final Request request=new Request.Builder()
                .url(url)
                .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                message.what=100;
                message.obj=e.getMessage();
                handler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                message.what=101;
                message.obj=response.body().string();
                handler.sendMessage(message);
            }
        });

        return this;
    }

    @NonNull
    private OkHttpClient getOkHttpClient() throws IOException {
        return new OkHttpClient.Builder()
                    .addInterceptor(new Interceptor() {
                        @Override
                        public Response intercept(Chain chain) throws IOException {
                            Request re = chain.request();
                            String method=re.method();
                            String host=re.url().host();
                            Log.i("OkHttpUtils",method+"=="+host);
                            return chain.proceed(re);
                        }
                    }).build();
    }

    //post请求
    public void post(String url,RequestBody body){
        final Message message=Message.obtain();
        try {
            OkHttpClient client=  getOkHttpClient();
            Request request=new Request.Builder()
                    .url(url)
                    .post(body).build();
            client.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    message.what=100;
                    message.obj=e.getMessage();
                    handler.sendMessage(message);
                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    message.what=101;
                    message.obj=response.body().string();
                    handler.sendMessage(message);
                }
            });

        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 101://成功
                    String data= (String) msg.obj;
                    listener.success(data);
                    break;
                case 100://失败
                    String error= (String) msg.obj;
                    listener.fail(error);
                    break;
            }
        }
    };


    private HttpListener listener;
    public void result(HttpListener listener){
        this.listener=listener;
    }


    public interface HttpListener{
        void success(String data);
        void fail(String error);
    }

}
package com.example.okhttp;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;

import java.io.File;
import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private String url = "https://www.zhaoapi.cn/product/getCatagory";
    private String url2 = "https://www.vipandroid.cn/cert/get_news_speak.php";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.btn_click).setOnClickListener(this);
        findViewById(R.id.btn_click2).setOnClickListener(this);
        findViewById(R.id.btn_click3).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_click:
                doGet();
                break;
            case R.id.btn_click2:
                doGet2();
                break;
            case R.id.btn_click3:
                doPost();
                break;
        }
    }

    private void doPost() {
        OkHttpClient okHttpClient = new OkHttpClient();
        RequestBody body = new FormEncodingBuilder()
                .add("open_id","100")
                .build();
        Request request = new Request.Builder()
                .post(body)
                .url(url2)
                .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {

            }

            @Override
            public void onResponse(Response response) throws IOException {
                String data = response.body().string();
                Log.i("aaa",data);
            }
        });
    }

    //Get同步请求
    private void doGet2() {
        new Thread(){
            @Override
            public void run() {
                super.run();
                OkHttpClient okHttpClient = new OkHttpClient();
                Request request= new Request.Builder().url(url).build();
                try {
                    Response response = okHttpClient.newCall(request).execute();
                    String data = response.body().string();
                    Log.i("aaa",data);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

    //Get异步请求
    private void doGet() {
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .get()
                .url(url)
                .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Log.i("aaa",string);
            }
        });

    }


}

封装get请求方法

package com.example.dw20181015.net;

import android.os.Handler;
import android.os.Message;

import com.squareup.okhttp.Callback;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;

import java.io.IOException;

public class OkHttp {

    public OkHttp get(String url){
        OkHttpClient client = new OkHttpClient();
        final Request request = new Request.Builder()
                .url(url)
                .get()
                .build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {

            }

            @Override
            public void onResponse(Response response) throws IOException {
                String result = response.body().string();
                Message message = new Message();
                message.what = 0;
                message.obj = result;
                handler.sendMessage(message);
            }
        });

        return this;
    }

    private NetCallBack netCallBack;

    public void setNetCallBack(NetCallBack netCallBack) {
        this.netCallBack = netCallBack;
    }

    public interface NetCallBack{
        void onSuccess(String result);
    }

    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what ==0){
                String result = (String) msg.obj;
                netCallBack.onSuccess(result);
            }
        }
    };
}

猜你喜欢

转载自blog.csdn.net/qq_42234894/article/details/83049353