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 }