OkHttp工具类

  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     
136 }

 

posted @ 2018-03-21 12:43  染红の街道  阅读(1123)  评论(0编辑  收藏  举报