package test;

 import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import javax.management.RuntimeErrorException; import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response; /**
* 发送http请求的工具类
*/
public class HttpUtil { //放置请求的URL
public class URL { public static final String REMOTE_ADDRESS = "http://47.94.166.158:8080/android_server/";
//登陆
public static final String LOGIN = REMOTE_ADDRESS + "user_login";
//。。。。
} /**
* GET请求,不传参只获取结果
* @param url url地址
* @param callback 回调函数
*/
public static void doGet(String url, Callback callback) throws IOException {
//创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request
Request request = new Request.Builder()
.url(url)
.build(); //new call
Call call = mOkHttpClient.newCall(request);
//请求加入调度
call.enqueue(callback);
} /**
* 通用post请求(同步)
* @param url 请求地址
* @param paramNames 表单属性
* @param paramValues 表单值
* @throws IOException
*/
public static String doPost(String url, String[] paramNames, String[] paramValues) throws IOException { OkHttpClient client = new OkHttpClient(); FormBody.Builder builder = new FormBody.Builder();
for (int i = 0; i < paramNames.length; i++) {
builder.add(paramNames[i], paramValues[i]);
} Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build(); Call call = client.newCall(request);
return call.execute().body().string();
} /**
* 通用post请求(异步)
* @param url 请求地址
* @param paramNames 表单属性
* @param paramValues 表单值
* @param callback 回调函数
*/
public static void doPostAsync(String url, String[] paramNames, String[] paramValues, Callback callback) { OkHttpClient client = new OkHttpClient(); FormBody.Builder builder = new FormBody.Builder();
for (int i = 0; i < paramNames.length; i++) { builder.add(paramNames[i], paramValues[i]); } Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build(); Call call = client.newCall(request);
call.enqueue(callback);
} /**
* 文件上传(上传头像,视频)
* @param url 请求地址
* @param paramValues 上传的文件,头像为1个,视频可以同时上传多个
*/
public static void fileUpload(final String url, final File file) { OkHttpClient client = new OkHttpClient(); //文件类型
MediaType TYPE_FILE = MediaType.parse("application/octet-stream"); Request.Builder builder = new Request.Builder(); for (int i = 0; i < paramValues.length; i++) { builder.post(RequestBody.create(TYPE_FILE, paramValues[i]));
} Request request = builder.url(url)
.build(); Call call = client.newCall(request);
call.enqueue(callback); } /**
* 表单参数和文件同时请求(异步)
* @param url 请求地址
* @param paramNames 属性名
* @param paramValues 属性值
* @param callback 回调函数
*/ }

OkHttp工具类的更多相关文章

  1. 超简单的okhttp封装工具类(上)

      版权声明:转载请注明出处:http://blog.csdn.net/piaomiao8179 https://blog.csdn.net/piaomiao8179/article/details/ ...

  2. Android OkHttp网络连接封装工具类

    package com.lidong.demo.utils; import android.os.Handler; import android.os.Looper; import com.googl ...

  3. Android开源项目发现--- 工具类快速开发篇(持续更新)

    1. Guava Google的基于java1.6的类库集合的扩展项目 包括collections, caching, primitives support, concurrency librarie ...

  4. Android开源项目发现--- 工具类网络相关篇(持续更新)

    1. Asynchronous Http Client for Android Android异步Http请求 项目地址:https://github.com/loopj/android-async- ...

  5. Android开源项目大全 - 工具类

    主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...

  6. Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)

    csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...

  7. okhttp3工具类及其使用

    先工具类 package com.bhy.bdai.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONAr ...

  8. Java使用OkHttps工具类调用外部接口

    前言 现在公司业务已止不是传统的增删改查等简单的业务处理操作,而是对数据各种联调三方接口与其他系统进行交互等,那么就需要我们在后台java中进行外部接口的调用,本文采用OkHttps工具类对接微信接口 ...

  9. 用Java编写的http下载工具类,包含下载进度回调

    HttpDownloader.java package com.buyishi; import java.io.FileOutputStream; import java.io.IOException ...

随机推荐

  1. ceph-deploy mon add 失败

    ceph-deploy mon add 失败 标签(空格分隔): ceph-deploy 运维 问题描述: 现有集群只有一个mon,需要通过ceph-deploy mon add添加两个mon.在ad ...

  2. js提交数据时需判断是点击事件还是回车键

    使用回车键实质还是点击事件==回车时将焦点聚居在某个标签上. Html代码: <div id="btlogin" class="btlogin">& ...

  3. 大数据处理之道(十分钟学会Python)

    一:python 简介 (1)Python的由来 Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个 ...

  4. k8s基础(3)etcd集群

    下载安装 https://github.com/coreos/etcd/releases 在这网页,可以看到有多个版本共选择. 下载3.25 解压后, cd etcd-v3.2.5-linux-amd ...

  5. Ok6410裸机驱动学习(一)开发工具

    1.GCC工具链 1.GCC默认处理的文件类型 文件类型 扩展名 文件说明 文本文件 *.c C语言源文件 *.C.*.cxx.*.cc C++源文件 *.i 预处理后的C语言源文件 *.ii 预处理 ...

  6. Linux查看并修改mysql的编码

    系统:阿里云 一.查看mysql字符集 输入:show variables like 'character_set_%'; 二.修改某一个数据库的编码 输入:alter database dbname ...

  7. 关于android的一些博文收集

    Java网络编程总结 http://www.cnblogs.com/oubo/archive/2012/01/16/2394641.html Android应用系列:双击返回键退出程序 http:// ...

  8. call apply bind 的区别

    1.call和apply都是对函数的直接调用,而bind方法返回的仍然是一个函数,因此后面还需要()来进行调用才可以 var xw={ name: "小王", gender: &q ...

  9. bos物流面试题

    BOS物流项目问题汇总 1 请描述一下这个系 统? 从两个方面回答, 第一个方面:系统背景及系统概述 本系统是基于B/S架构而设计开发的,是某物流公司的一个后台管理系统,属于物流公司整个ERP平台的一 ...

  10. 6.6 安装IDEA

    非常感谢Kevin指导.让我简化了安装步骤.安装包可以直接到我的公司文件夹中sunny文件夹中获取. 首先准备好安装包: 然后打开终端: 解压,进入bin目录,执行idea.sh;或者,直接运行: b ...