NetWorkUtils

public class NetWorkUtils {

private static final String SERVER_INTERFACE ="http://172.16.2.135:8089/";

? ? //局域網:? http://172.16.2.135:8089

//遠程:http://58.250.30.13:8086/

//后臺協商的字段

//? ? private static final String SUCCESS_FLAG_VALUE = "1";

? ? private static final String SUCCESS_FLAG ="success";

? ? private static final String FAIL_FLAG ="message";

? ? //狀態值,暴露出去

? ? public static final String NO_NETWORK ="NULL_NETWORK";

? ? private static OkHttpClient mOkHttpClient;

? ? private static NetWorkUtils mNetWorkUtils;

? ? public static NetWorkUtils get() {

if (mNetWorkUtils ==null) {

mNetWorkUtils =new NetWorkUtils();

? ? ? ? }

return mNetWorkUtils;

? ? }

private NetWorkUtils() {

mOkHttpClient =new OkHttpClient();

? ? }

public void postAsyncHttp(final Context context, String action, Object data, Map paramsData, final int httpType, final HttpRequestCallback requestCallback) {

if (checkConnect(context)) {

requestCallback.onFailure(NO_NETWORK, httpType);

? ? ? ? ? ? return;

? ? ? ? }

mOkHttpClient.newBuilder()

.readTimeout(20000, TimeUnit.SECONDS)//設置讀取超時時間

? ? ? ? ? ? ? ? .writeTimeout(20000, TimeUnit.SECONDS)//設置寫的超時時間

? ? ? ? ? ? ? ? .connectTimeout(20000, TimeUnit.SECONDS)//設置連接超時時間

? ? ? ? ? ? ? ? .build();

? ? ? ? Request.Builder requestBuilder =new Request.Builder();

? ? ? ? requestBuilder.addHeader("Content-Type", "application/json");

? ? ? ? String url =SERVER_INTERFACE + action;

? ? ? ? if (data !=null) {

if (paramsData !=null) {

boolean init =true;

? ? ? ? ? ? ? ? for (Map.Entryentry :

paramsData.entrySet()) {

if (init) {

url +="?" +entry.getKey() +"=" +entry.getValue();

? ? ? ? ? ? ? ? ? ? ? ? init =false;

? ? ? ? ? ? ? ? ? ? }else {

url +="&" +entry.getKey() +"=" +entry.getValue();

? ? ? ? ? ? ? ? ? ? }

}

}

requestBuilder.post(RequestBody.create(

MediaType.parse("application/json; charset=utf-8"),

? ? ? ? ? ? ? ? ? ? new Gson().toJson(data)));

? ? ? ? ? ? Log.d("zc", "json:" +new Gson().toJson(data));

? ? ? ? }else if (paramsData !=null) {

FormBody.Builder bodyBuilder =new FormBody.Builder();

? ? ? ? ? ? for (Map.Entryentry :

paramsData.entrySet()) {

bodyBuilder.add(entry.getKey(), entry.getValue());

? ? ? ? ? ? }

requestBuilder.post(bodyBuilder.build());

? ? ? ? }

Log.d("zc", "url:" +url);

? ? ? ? Request request =requestBuilder

? ? ? ? ? ? ? ? .url(url)

.build();

final Call call =mOkHttpClient.newCall(request);

? ? ? ? call.enqueue(new Callback() {

@Override

? ? ? ? ? ? public void onFailure(Call call, IOException e) {

requestCallback.onFailure(e.getLocalizedMessage(), httpType);

? ? ? ? ? ? }

@Override

? ? ? ? ? ? public void onResponse(Call call, Response response)throws IOException {

setResponse(requestCallback, response.body().string(), httpType);

? ? ? ? ? ? }

});

? ? }

public void getSyncHttp(Context context, final int httpType, String url, final HttpRequestCallback requestCallback) {

if (checkConnect(context)) {

requestCallback.onFailure(NO_NETWORK, httpType);

? ? ? ? ? ? return;

? ? ? ? }

Request request =new Request

.Builder().url(url).build();

? ? ? ? Call call =mOkHttpClient.newCall(request);

? ? ? ? call.enqueue(new Callback() {

@Override

? ? ? ? ? ? public void onFailure(Call call, IOException e) {

requestCallback.onFailure(e.getLocalizedMessage(), httpType);

? ? ? ? ? ? }

@Override

? ? ? ? ? ? public void onResponse(Call call, Response response)throws IOException {

setResponse(requestCallback, response.body().string(), httpType);

? ? ? ? ? ? }

});

? ? }

//設置成功回調的數據

? ? private void setResponse(HttpRequestCallback requestCallback, String jsonStr, int httpType) {

try {

JSONObject object =new JSONObject(jsonStr);

? ? ? ? ? ? if (object.getBoolean(SUCCESS_FLAG)) {

requestCallback.onResponse(jsonStr, httpType);

? ? ? ? ? ? }else {

requestCallback.onFailure(object.getString(FAIL_FLAG), httpType);

? ? ? ? ? ? }

}catch (Exception e) {

requestCallback.onFailure(e.toString(), httpType);

? ? ? ? }

}

//檢查網絡狀態

? ? private static boolean checkConnect(Context cont) {

ConnectivityManager cm = (ConnectivityManager) cont.getSystemService(Context.CONNECTIVITY_SERVICE);

? ? ? ? NetworkInfo info =cm.getActiveNetworkInfo();

? ? ? ? return info ==null;

? ? }

}


//網絡接口

public interface HttpRequestCallback {

/**

* 獲取數據成功

*

? ? * @param request

? ? * @param type

? ? */

? ? void onResponse(String request, int type);

? ? /**

* 獲取數據失敗

*

? ? * @param exp

? ? */

? ? void onFailure(String exp, int type);

}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • JAVA面試題 1、作用域public,private,protected,以及不寫時的區別答:區別如下:作用域 ...
    JA尐白閱讀 1,181評論 1 0
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,740評論 18 399
  • 《驢得水》觀后感 《驢得水》上映的時候一直聽說評價不錯,到今天才真的親自看了一下,本以為是喜劇,但是越看越壓抑,劇...
    一只小獅子閱讀 275評論 0 0
  • 我每天早上睜開眼的第一反應是:現在幾點了。只可能比鬧鐘起的晚,從來不會比它早。然后匆忙開始一天的生活和工作。 每天...
    原小可閱讀 223評論 3 6