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 ...
随机推荐
- 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode
目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...
- 【转】 Pro Android学习笔记(三七):Fragment(2):基础小例子
目录(?)[-] 小例子运行效果 Pre-step一点准备 Step 1Activity的布局 小例子运行效果 这是一个书名和书简介的例子.运行如下图.Activity由左右两个Fragment组成, ...
- 杂项-权限管理:Spring Secutity
ylbtech-杂项-权限管理:Spring Secutity Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在S ...
- ng2 中的全屏与退出全屏
1.进入全屏 launchFullscreen(element) { if(element.requestFullscreen) { element.requestFullscreen(); } el ...
- Python命令模块argparse学习笔记(四)
默认参数 ArgumentParser.set_defaults(**kwargs) set_defaults()可以设置一些参数的默认值 >>> parser = argparse ...
- url传参解决中文乱码
跳转前: window.open("http://localhost:9728/content/agent/devolution.html?search_agent=" + enc ...
- 17_点击事件第四种写法_布局文件添加onclick属性
尽量不要用第四种点击事件的写法.在一万多行代码中发现了一个没被调用的代码 public void call(View v){//第四种写法参数一定是View v //public void call( ...
- [51nod1043]幸运号码
题意:1个长度为2N的数,如果左边N个数的和 = 右边N个数的和,那么就是一个幸运号码. 例如:99.1230.123312是幸运号码. 给出一个N,求长度为2N的幸运号码的数量.由于数量很大,输出数 ...
- JsonPath的用法
有时候需要从json里面提取相关数据,必须得用到如何提取信息的知识,下面来写一下 语法格式 JsonPath 描述 $ 根节点 @ 当前节点 .or[] 子节点 .. 选择所有符合条件的节点 * 所有 ...
- sqlserver2012——触发器
触发器:是一个修改指定数据时执行的存储过程. 创建触发器 Create Trigger trigger_name ON {table|view} { } 例子: insert触发器: create T ...