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工具类的更多相关文章
-
超简单的okhttp封装工具类(上)
版权声明:转载请注明出处:http://blog.csdn.net/piaomiao8179 https://blog.csdn.net/piaomiao8179/article/details/ ...
-
Android OkHttp网络连接封装工具类
package com.lidong.demo.utils; import android.os.Handler; import android.os.Looper; import com.googl ...
-
Android开源项目发现--- 工具类快速开发篇(持续更新)
1. Guava Google的基于java1.6的类库集合的扩展项目 包括collections, caching, primitives support, concurrency librarie ...
-
Android开源项目发现--- 工具类网络相关篇(持续更新)
1. Asynchronous Http Client for Android Android异步Http请求 项目地址:https://github.com/loopj/android-async- ...
-
Android开源项目大全 - 工具类
主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...
-
Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)
csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...
-
okhttp3工具类及其使用
先工具类 package com.bhy.bdai.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONAr ...
-
Java使用OkHttps工具类调用外部接口
前言 现在公司业务已止不是传统的增删改查等简单的业务处理操作,而是对数据各种联调三方接口与其他系统进行交互等,那么就需要我们在后台java中进行外部接口的调用,本文采用OkHttps工具类对接微信接口 ...
-
用Java编写的http下载工具类,包含下载进度回调
HttpDownloader.java package com.buyishi; import java.io.FileOutputStream; import java.io.IOException ...
随机推荐
-
【Cocos2d-Js基础教学(6)网络层(弱联网)的封装及使用】
谈到联网,在游戏中也是非常核心的模块,在官方Js-test中我们可以找到联网部分 的NetworkTest文件下有两个类 SocketIOTest.js(Socket 类) WebSocketTest ...
-
BZOJ4241 历史研究
Description IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. ...
-
RouterOS 软路由配置固定IP上网+DHCP
实现要求: 局域网所有PC机自动获取IP地址,能相互访问并且能访问外网 环境要求: 一台PC机安装两张网卡 ( 使用常用的网卡芯片,例如Intel芯片.RTL瑞昱芯片等 ) 配置说明 1.外网IP地址 ...
-
01.Box2dWeb入门教程
1.下载box2dweb.直接在页面中引用即可. -Box2D.js是未压缩版 -Box2d.min.js是压缩版 2.编写HelloWorld代码. <!DOCTYPE HTML> &l ...
-
Thinking Clearly about Performance
http://queue.acm.org/detail.cfm?id=1854041 The July/August issue of acmqueue is out now acmqueue is ...
-
Global build settings
[ ] Select all packages by default *** General build options *** [ ] Show packages that require gr ...
-
jvm调优经验分享
当Java程序申请内存,超出VM可分配内纯的时候,VM首先可能会GC,假设GC完还是不够,或者申请的直接超够VM可能有的,就会抛出内 存溢出异常.从VM规范中我们能够得到,一下几种异常. java.l ...
-
浅谈RESTful
浅谈RESTful 什么是RESTful? REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Ro ...
-
mysql5.7 的 user表的密码字段从 password 变成了 authentication_string
来源: http://www.zhimengzhe.com/shujuku/other/267631.html 感觉还是挺坑的 自己没了解清楚 就动手 转帖一下 mark 一下. 1.首先停止正在运行 ...
-
Java12配置
配置环境变量: 之前的JAVA_HOME和CLASSPATH已经都不要了.只要配置jdk的bin到Path里: C:\Program Files\Java\jdk-12\bin