OkHttp工具类
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 ...
随机推荐
- TS学习之泛型
可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据 不适用泛型的函数 function myfn(args: number): number { return args; } functi ...
- kvm 基础 虚拟机改名
转自:http://www.cnblogs.com/5201351/p/4464350.htm 1.查看所有的kvm虚拟机 [root@5201351_kvm ~]# virsh list --all ...
- linux命令-tar工具详解
把文件和目录打成一个包 文件打包 [root@wangshaojun ~]# tar -cvf 1.tar 1.txt 123 234 ///-c创建 -v可视化 -f file放最后面1.txt12 ...
- 字符串(String)
字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法. 常见功能: obj.length ...
- 19E Fairy
Once upon a time there lived a good fairy A. One day a fine young man B came to her and asked to pre ...
- JavaScript中的构造函数和工厂函数说明
在cnblog上看到一篇文章,讲解JS中的构造函数和工厂函数,觉得讲的真好 JavaScript中的工厂函数和构造函数都能用来创建一个对象,我们可以来看看下面的例子 构造函数 function cre ...
- 解决Umbraco中Generated文件夹下面model问题
在Visual Studio中开发Umbraco项目时,有一个文件夹叫Generated, 在Umbraco 的back office中的Document Type产生的model都会自动进入这个文件 ...
- 手写一个admin 组件------STARK
开一个新的项目,,建立一个stark 包, 在里面创建一个service包,在service 包里创建一个stark.py 文件, 配置好环境, makemigreations, migreate. ...
- 洛谷P3380 【模板】二逼平衡树(树套树)(线段树+树状数组)
P3380 [模板]二逼平衡树(树套树) 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 查询k在区间内的排名 查询区间内排名为k的值 修改某一位值上的数 ...
- [Xcode 实际操作]五、使用表格-(1)使用UITableView制作简单表格
目录:[Swift]Xcode实际操作 本文将演示表格视图的使用方法. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先添加两个协 ...