whb851423
whb851423
2018-12-12 03:51

关于OKHTTP 的问题请教

  • okhttp使用详解
  • okhttp3

请教一个问题,如下代码

public class OKHttpUtil {

    public static String contentType="text/html; charset=UTF-8";
    public static int timeOunt = 30;
    public static OkHttpClient client = new OkHttpClient.Builder().readTimeout(timeOunt, TimeUnit.SECONDS).build();

    public static String sendPost(String url, Map<String, String> paramMap){

        FormBody.Builder builder = new FormBody.Builder();
        Iterator it = paramMap.keySet().iterator();
        while (it.hasNext()){
            String key = it.next().toString();
            builder.add(key,paramMap.get(key));
        }
        Request request = new Request.Builder().url(url).addHeader("Content-Type",contentType).post(builder.build()).build();
        Response response = null;
        try {
            response = client.newCall(request).execute();
            return response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 异步发送
     * @param url
     * @param paramMap
     * @param callback
     */
    public static void sendPostAsyn(String url, Map<String, String> paramMap ,Callback callback){
        FormBody.Builder builder = new FormBody.Builder();
        Iterator it = paramMap.keySet().iterator();
        while (it.hasNext()){
            String key = it.next().toString();
            builder.add(key,paramMap.get(key));
        }
        Request request = new Request.Builder().url(url).addHeader("Content-Type",contentType).post(builder.build()).build();
        Call call = client.newCall(request);
        call.enqueue(callback);
    }

}

第一次使用这个框架不是很了解,现在有2个疑问,想请教下对这个框架比较了解的朋友!
第一个疑问:
使用一个OkHttpClient 对象 在高并发时,能否即发送同步请求,又发布异步请求。如,使用
OKHttpUtil.sendPostAsyn 发送异步后,在调用OKHttpUtil。sendPost 发送同步,发送使用同一个OkHttpClient 对象。

第二个疑问
OkHttpClient 对象每次发送都要new ,还是可以像代码中初始化一个静态的一直使用

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

0条回答

为你推荐