OkhttpUtils

原创 2018年04月16日 19:57:34
package com.example.okhttpdemo.net;

import android.util.Log;

import java.io.File;
import java.io.IOException;
import java.util.Map;

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

public class OkhttpUtils {
    //private static OkhttpUtils okhttpUtils = new OkhttpUtils();//饿汉式
    private static OkhttpUtils okhttpUtils;
    private final OkHttpClient okHttpClient;

    //构造方法要私有化
    private OkhttpUtils() {
        //创建OkhttpClient
        okHttpClient = new OkHttpClient();
    }

    //懒汉式
    public static OkhttpUtils getInstance() {
        if (okhttpUtils == null) {
            okhttpUtils = new OkhttpUtils();
        }
        return okhttpUtils;
    }

    /*饿汉式
    public static OkhttpUtils getInstance(){
        return okhttpUtils;
    }*/


    /**
     * GET请求
     *
     * @param url
     * @param params
     */
    public void doGet(String url, Map<String, String> params, final OnNetListener onNetListener) {
        //判断params是否为null
        if (params != null) {
            StringBuilder sb = new StringBuilder();
            sb.append("?");
            //拼接参数
            for (Map.Entry<String, String> entry : params.entrySet()) {
                sb.append(entry.getKey());
                sb.append("=");
                sb.append(entry.getValue());
                sb.append("&");
            }
            //?mobile=12354678954&password=123456&
            String s = sb.toString();
            String strParam = s.substring(0, s.length() - 1);
            url += strParam;
            Log.e("sdfasdf", "url = " + url);
        }
        //创建Request对象
        Request request = new Request.Builder().url(url).build();
        //发送请求
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                onNetListener.onFailed(e);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String string = response.body().string();
                Log.e("MainActivity", "string = " + string);
                onNetListener.onSuccess(string);
            }

        });
    }

    /**
     * GET请求
     */
    public void doGet(String url) {
        //创建Requet对象
        Request request = new Request.Builder().url(url).build();
        //进行请求
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.e("MainActivity", "onFailure");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String string = response.body().string();
                Log.e("MainActivity", "string = " + string);
            }
        });

    }


    public void doPost(String url, Map<String, String> params) {
        if (params != null) {
            //创建FormBody用于封装参数
            FormBody.Builder fBuilder = new FormBody.Builder();
            for (Map.Entry<String, String> entry : params.entrySet()) {
                fBuilder.add(entry.getKey(), entry.getValue());
            }
            FormBody formBody = fBuilder.build();
            Request.Builder builder = new Request.Builder();
            builder.url(url);
            builder.post(formBody);
            //创建Request
            Request request = builder.build();

            okHttpClient.newCall(request).enqueue(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();
                    Log.e("MainActivity", "string = " + string);
                }
            });
        }
    }

    /**
     * 上传
     *
     * @param url
     * @param fileName
     * @param file
     */
    public void update(String url, Map<String, String> params, String fileName, File file) {

        MultipartBody.Builder builder = new MultipartBody.Builder();
        builder.setType(MultipartBody.FORM);
        if (params != null) {
            for (Map.Entry<String, String> entry : params.entrySet()) {
                builder.addFormDataPart(entry.getKey(), entry.getValue());
            }

        }
        builder.addFormDataPart("file", fileName, RequestBody.create(MediaType.parse("application/octet-stream"),
                file));
        MultipartBody multipartBody = builder.build();
        Request requeset = new Request.Builder().url(url).post(multipartBody).build();
        okHttpClient.newCall(requeset).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

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

            }
        });
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sui_yz/article/details/79965479

OkHttpUtils一个专注于让网络请求更简单的框架

1.支持的常用功能 一般的 get,post,put,delete,head,options请求基于Post的大文本数据上传,postString(),postJson()等多文件和多参数统一的...
  • hehe307
  • hehe307
  • 2016-06-22 13:44:14
  • 10700

OkHttpUtils

  • 2016年08月09日 18:24
  • 52.7MB
  • 下载

Okhttputils终极封装

前言:项目源码https://github.com/yulyu2008/XiayuOkHttpOkhttputils是张鸿洋基于okhhttp封装的一个框架,使用起来很方便,相信很多人都用到过,这里我...
  • yulyu
  • yulyu
  • 2017-02-13 15:01:36
  • 8349

okHttpUtils

  • 2016年12月03日 18:27
  • 2.44MB
  • 下载

OkHttputils

  • 2017年05月03日 10:39
  • 34.59MB
  • 下载

关于android使用okhttpUtils使用请求https请求证书签名问题

1.关于https的相关内容,网络上有很多,我这边文章就不相应赘述了,因为现在很多开源的网络请求都是封装的很好,我们只要拿来用就好了,比如说我的项目正在使用的okhttputils的网络框架就支持ht...
  • majissa
  • majissa
  • 2017-03-28 11:07:18
  • 1634

OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据

OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详...
  • qq_26787115
  • qq_26787115
  • 2016-06-19 20:04:04
  • 8301

okHttpUtils(hongyang)的配置及使用(网络框架)

okHttpUtils(hongyang)的配置及使用(网络框架)
  • lixiang_Y
  • lixiang_Y
  • 2017-04-13 19:19:17
  • 6998

OkHttpUtils的集成

因为近期学习了OkHttpUtilts的使用,所以想在这里说明一下项目集成OkHttpUtils中遇到的坑,做一个记录,也想帮助想集成OkHttpUtils的朋友能快速找到问题,定位问题,然后解决问题...
  • u013823101
  • u013823101
  • 2016-12-13 13:46:15
  • 2570

Okhttp与Okhttputils的用法及区别

网络框架Okhttp和OkhttpUtils的常用方法步骤及特点
  • infiniteUp
  • infiniteUp
  • 2016-10-26 16:15:02
  • 6271
收藏助手
不良信息举报
您举报文章:OkhttpUtils
举报原因:
原因补充:

(最多只允许输入30个字)