HttpInterface.java 3.11 KB
package com.huaheng.wms.https;

import android.util.Log;

import com.huaheng.wms.WMSApplication;
import com.huaheng.wms.WMSLog;

import org.json.JSONObject;

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

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

public class HttpInterface {

    public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

    public static void login(String userName, String password) {
        RequestBody formBody = new FormBody.Builder()
        .add("userName", userName)
        .add("password", password)
                .build();
        commonPost(HttpConstant.LOGIN, formBody);
    }

    public static void getWarehouseList() {
        RequestBody formBody = new FormBody.Builder()
                .build();
        commonPost(HttpConstant.WAREHOUSE, formBody);
    }

    public static void getUserList() {
        RequestBody formBody2 = new FormBody.Builder()
                .build();
        commonPost(HttpConstant.WAREHOUSE, formBody2);
    }


    private void jsonCommonPost(String url, JSONObject object) {
        RequestBody formBody = RequestBody.create(JSON, object.toString());
        commonPost(url, formBody);
    }

    private static void commonPost(String url, RequestBody formBody) {
        OkHttpClient mOkHttpClient = new OkHttpClient.Builder()
                .readTimeout(HttpConstant.READ_TIMEOUT, TimeUnit.SECONDS)
                .writeTimeout(HttpConstant.WRITE_TIMEOUT, TimeUnit.SECONDS)
                .connectTimeout(HttpConstant.CONNECT_TIMEOUT, TimeUnit.SECONDS).build();
        Request request = null;
        String cookie = WMSApplication.getOkhttpCookie();
        if(cookie == null) {
            request = new Request.Builder()
                    .url(url)
                    .post(formBody)
                    .build();
        } else {
            request = new Request.Builder()
                    .addHeader("cookie",cookie)
                    .url(url)
                    .post(formBody)
                    .build();
        }
        Call call = mOkHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String str = response.body().string();
                Headers headers = response.headers();
                List<String> cookies = headers.values("Set-Cookie");
                if (cookies.size() > 0) {
                    String session = cookies.get(0);
                    String result = session.substring(0, session.indexOf(";"));
                    WMSApplication.setOkhttpCookie(result);
                }
                Log.i("WeiPos", "onResponse str:" +  str);
                WMSLog.d("onResponse str:" +  str);
            }
        });
    }

}