package com.bpa.scalage.helper;

import com.bpa.scalage.config.ConfigName;
import com.bpa.scalage.message.MessageManager;

import java.io.IOException;

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

/**
 * Okhttp
 */
public class OkhttpUtils {

    // 发起GET方式的HTTP请求
    public static void doGet(final String name,final String api) {
        OkHttpClient client = new OkHttpClient(); // 创建一个okhttp客户端对象
        // 创建一个GET方式的请求结构
        Request request = new Request.Builder().url(api).method("GET", null).build();
//        Request request = new Request.Builder()
//                //.get() // 因为OkHttp默认采用get方式，所以这里可以不调get方法
//                .header("Accept-Language", "zh-CN") // 给http请求添加头部信息
//                .url(api) // 指定http请求的调用地址
//                .build();
        Call call = client.newCall(request); // 根据请求结构创建调用对象
        // 加入HTTP请求队列。异步调用，并设置接口应答的回调方法
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) { // 请求失败
                MessageManager.getInstance().sendMessage(name,"");
            }
            @Override
            public void onResponse(Call call, final Response response) throws IOException { // 请求成功
                String resp = response.body().string();
                MessageManager.getInstance().sendMessage(name,resp);
            }
        });
    }


    // 发起POST方式的HTTP请求（报文为JSON格式）
    public static void doPost(final String name,final String urlPath,final String content) {
        // 创建一个POST方式的请求结构
        RequestBody body = RequestBody.create(content, MediaType.parse("application/json;charset=utf-8"));
        OkHttpClient client = new OkHttpClient(); // 创建一个okhttp客户端对象
        Request request = new Request.Builder()
                .url(urlPath)
                .addHeader("TenantId", ConfigName.getInstance().Shop_Id)
                .post(body).build();
        Call call = client.newCall(request); // 根据请求结构创建调用对象
        // 加入HTTP请求队列。异步调用，并设置接口应答的回调方法
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) { // 请求失败
                MessageManager.getInstance().sendMessage(name,"");
            }
            @Override
            public void onResponse(Call call, final Response response) throws IOException { // 请求成功.setText("调用登录接口返回：\n"+resp));
                String resp = response.body().string();
                MessageManager.getInstance().sendMessage(name,resp);
            }
        });
    }
}
