1. package test;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7.  
  8. import javax.management.RuntimeErrorException;
  9.  
  10. import okhttp3.Call;
  11. import okhttp3.Callback;
  12. import okhttp3.FormBody;
  13. import okhttp3.MediaType;
  14. import okhttp3.OkHttpClient;
  15. import okhttp3.Request;
  16. import okhttp3.RequestBody;
  17. import okhttp3.Response;
  18.  
  19. /**
  20. * 发送http请求的工具类
  21. */
  22. public class HttpUtil {
  23.  
  24. //放置请求的URL
  25. public class URL {
  26.  
  27. public static final String REMOTE_ADDRESS = "http://47.94.166.158:8080/android_server/";
  28. //登陆
  29. public static final String LOGIN = REMOTE_ADDRESS + "user_login";
  30. //。。。。
  31. }
  32.  
  33. /**
  34. * GET请求,不传参只获取结果
  35. * @param url url地址
  36. * @param callback 回调函数
  37. */
  38. public static void doGet(String url, Callback callback) throws IOException {
  39. //创建okHttpClient对象
  40. OkHttpClient mOkHttpClient = new OkHttpClient();
  41. //创建一个Request
  42. Request request = new Request.Builder()
  43. .url(url)
  44. .build();
  45.  
  46. //new call
  47. Call call = mOkHttpClient.newCall(request);
  48. //请求加入调度
  49. call.enqueue(callback);
  50. }
  51.  
  52. /**
  53. * 通用post请求(同步)
  54. * @param url 请求地址
  55. * @param paramNames 表单属性
  56. * @param paramValues 表单值
  57. * @throws IOException
  58. */
  59. public static String doPost(String url, String[] paramNames, String[] paramValues) throws IOException {
  60.  
  61. OkHttpClient client = new OkHttpClient();
  62.  
  63. FormBody.Builder builder = new FormBody.Builder();
  64. for (int i = 0; i < paramNames.length; i++) {
  65. builder.add(paramNames[i], paramValues[i]);
  66. }
  67.  
  68. Request request = new Request.Builder()
  69. .url(url)
  70. .post(builder.build())
  71. .build();
  72.  
  73. Call call = client.newCall(request);
  74. return call.execute().body().string();
  75. }
  76.  
  77. /**
  78. * 通用post请求(异步)
  79. * @param url 请求地址
  80. * @param paramNames 表单属性
  81. * @param paramValues 表单值
  82. * @param callback 回调函数
  83. */
  84. public static void doPostAsync(String url, String[] paramNames, String[] paramValues, Callback callback) {
  85.  
  86. OkHttpClient client = new OkHttpClient();
  87.  
  88. FormBody.Builder builder = new FormBody.Builder();
  89. for (int i = 0; i < paramNames.length; i++) { builder.add(paramNames[i], paramValues[i]); }
  90.  
  91. Request request = new Request.Builder()
  92. .url(url)
  93. .post(builder.build())
  94. .build();
  95.  
  96. Call call = client.newCall(request);
  97. call.enqueue(callback);
  98. }
  99.  
  100. /**
  101. * 文件上传(上传头像,视频)
  102. * @param url 请求地址
  103. * @param paramValues 上传的文件,头像为1个,视频可以同时上传多个
  104. */
  105. public static void fileUpload(final String url, final File file) {
  106.  
  107. OkHttpClient client = new OkHttpClient();
  108.  
  109. //文件类型
  110. MediaType TYPE_FILE = MediaType.parse("application/octet-stream");
  111.  
  112. Request.Builder builder = new Request.Builder();
  113.  
  114. for (int i = 0; i < paramValues.length; i++) {
  115.  
  116. builder.post(RequestBody.create(TYPE_FILE, paramValues[i]));
  117. }
  118.  
  119. Request request = builder.url(url)
  120. .build();
  121.  
  122. Call call = client.newCall(request);
  123. call.enqueue(callback);
  124.  
  125. }
  126.  
  127. /**
  128. * 表单参数和文件同时请求(异步)
  129. * @param url 请求地址
  130. * @param paramNames 属性名
  131. * @param paramValues 属性值
  132. * @param callback 回调函数
  133. */
  134.  
  135. }

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. 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化

    一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std  计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属 ...

  2. nodejs assert 模块

    assert模块是Node的内置模块,主要用于断定.如果表达式不符合预期,就抛出一个错误.该模块提供11个方法,但只有少数几个是常用的. 1.assert() assert(value[, messa ...

  3. 8、非root权限下安装perl以及perl模块

    转载:http://www.cnblogs.com/nkwy2012/p/6418669.html 转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无roo ...

  4. Luogu 4556 雨天的尾巴

    主席树+线段树合并. 首先我们想一想如果只有一个结点的话,我们弄一个权值线段树就可以随便维护了. 那么我们可以运用差分的思想,把一个询问拆成四个操作,对于一个询问$(x, y, v)$,我们在$x$的 ...

  5. Jenkins配置有用摘抄笔记

    使用jenkins配置.net mvc5网站自动构建全过程记录  转自:http://www.cnblogs.com/baiyunchen/p/4724350.html 持续集成是个简单重复劳动,人来 ...

  6. ASP.NET jquery 获取服务器控件ID

    一般方法: jQuery("#txtUserName").val(); 如果页面加载了母版页或者自定义控件:该页面的ID有可能会被篡改(可能是因为避免控件ID冲突的机制),因此强烈 ...

  7. 使用Django创建一个后端是SQLSERVER的简单系统(一)Django连接SQLServer数据库

    window环境下Django连接SQLSERVER, 1.创建项目: 2.创建application: 3.使用pycharm打开项目,如下图: 4.配置虚拟环境: 安装Django\pyodbc\ ...

  8. Ansible Playbooks基本使用

    你将学到什么 如何使用playbook 如何编写playbook 如何使用roles PlayBook使用 基础环境 ### 64 位 Ubuntu 16.04 LTS,创建CentOS LXC容器w ...

  9. 使用 PHPMailer 发送邮件出现诡异bug,间歇性发送失败

    场景 使用PHPMailer的SMTP发送邮件,用的是腾讯企业邮箱 smtp.exmail.qq.com 在邮箱设置里看到配置smtp方法 问题描述 本地windows开发环境发送邮件100%成功 远 ...

  10. 51nod1035(循环节)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1035 题意:中文题诶- 思路:求满足 10^k=1(mod ...