簡單封裝Okhttp的get,post方法

1.Okhttp工具類
package bw.com.lxi;

import com.google.gson.Gson;

import java.util.concurrent.TimeUnit;

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

public class OkHttP {
private static final Gson gson = new Gson();
private static OkHttpClient client;
private static final String METHOD_GET=“GET”;
private static final String METHOD_POST=“POST”;
private static final String MEDIA_TYPE=“application/json;charset=utf-8”;

private OkHttP(){};

public static void init(){
    client = new OkHttpClient.Builder()
            .connectTimeout(3000,TimeUnit.MILLISECONDS)
            .writeTimeout(3000,TimeUnit.MILLISECONDS)
            .readTimeout(3000,TimeUnit.MILLISECONDS)
            .build();
}
private static Request createRequest(String url,String method,BaseRequest baseRequest){
    RequestBody requestBody = null;
    if (baseRequest!=null){
        String s = gson.toJson(baseRequest);
        MediaType mediaType = MediaType.parse(MEDIA_TYPE);
        requestBody = RequestBody.create(mediaType,s);
    }
    Request request = null;
    Request.Builder builder = new Request.Builder().url(url);
    switch (method){
        case METHOD_GET:
            request=builder.get().build();
            break;
        case METHOD_POST:
            request=builder.put(requestBody).build();
            break;
    }
    return request;
}
//創建Request對象
public static void createget(String url, Callback callback){
    Request request = createRequest(url,METHOD_GET,null);
    Call call = client.newCall(request);
    call.enqueue(callback);
}
public static void createPost(String url,BaseRequest baseRequest,Callback callback){
    Request request = createRequest(url,METHOD_POST,baseRequest);
    Call call = client.newCall(request);
    call.enqueue(callback);
}

}

2.BaseRequest類
public class BaseRequest implements Serializable {
}

3.初始化init方法
package bw.com.lxi;

import android.app.Application;

public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
OkHttP.init();
}
}

4.使用
package bw.com.lxi;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.google.gson.Gson;

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

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
private String path=“http://www.xieast.com/api/news/news.php\n”;

Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
    }
};

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

    findViewById(R.id.dianji).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            OkHttP.createget(path, new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {

                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    final String string = response.body().string();

                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            Gson gson = new Gson();
                            Bean bean = gson.fromJson(string, Bean.class);
                            List<Bean.DataBean> data = bean.getData();
                            Toast.makeText(MainActivity.this, data.toString(), Toast.LENGTH_SHORT).show();
                        }
                    });

                }
            });

        }
    });
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章