创建对象
OkHttpClient OK_HTTP_CLIENT = new OkHttpClient.Builder().build()
请求Requests(请求)
每一个HTTP请求中都应该包含一个URL,一个GET或POST方法以及Header或其他参数,当然还可以含特定内容类型的数据流。
Responses(响应)
响应则包含一个回复代码(200代表成功,404代表未找到),Header和定制可选的body。
同步get请求
public static void GetString(String url) {
Request request = new Request.Builder().url(url).build();
try {
okhttp3.Response response = OK_HTTP_CLIENT.newCall(request).execute();
if (response.isSuccessful()) {
Headers responseHeaders = response.headers();
for (int i = 0; i < responseHeaders.size(); i++) {
System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
System.out.println(response.body().string());
}
} catch (IOException e) {
e.printStackTrace();
}
}
异步get
public static void EnqueueGet(String url) {
Request request = new Request.Builder().url(url).build();
OK_HTTP_CLIENT.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
Headers responseHeaders = response.headers();
for (int i = 0; i < responseHeaders.size(); i++) {
System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
System.out.println(response.body().string());
}
}
);
}
添加请求头
Request request = new Request.Builder().url(url)
.header("User-Agent", "OkHttp Headers.java")
.addHeader("Accept", "application/json; q=0.5")
.addHeader("Accept", "application/vnd.github.v3+json")
.build();
添加拦截器
///当有拦截器的时候,任务会先被发送到拦截器中,在通过拦截器往下传递
private final static OkHttpClient OK_HTTP_CLIENT = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Log.e("ljl", "请求地址====" + request.url());
Headers headers = request.headers();
RequestBody body = request.body();
for (int i = 0; i < headers.size(); i++) {
Log.e("ljl", headers.name(i) + "========" + headers.value(i));
}
return chain.proceed(request);
}
}).build();
postkey-value参数请求方式
public static void PostString(String url, Map<String, String> params) {
// RequestBody body = new MultipartBody.Builder().build();
MultipartBody.Builder builder = new MultipartBody.Builder();
for (String key : params.keySet()) {
String val = params.get(key);
try {
builder.addFormDataPart(key, val);
} catch (Exception e) {
e.printStackTrace();
}
}
RequestBody body = builder.build();
Request request = new Request.Builder().url(url)
.post(body)
.build();
try {
okhttp3.Response response = OK_HTTP_CLIENT.newCall(request).execute();
if (response.isSuccessful()) {
Headers responseHeaders = response.headers();
for (int i = 0; i < responseHeaders.size(); i++) {
System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
System.out.println(response.body().string());
}
} catch (IOException e) {
e.printStackTrace();
}
}
post 上传图片
/**
* @param url 请求地址
* @param params 请求参数
* @param list 上传图片的路径集合
*/
public static void PostImage(String url, Map<String, String> params, List<String> list) {
MultipartBody.Builder builder = new MultipartBody.Builder();
for (String key : params.keySet()) {
String val = params.get(key);
try {
builder.addFormDataPart(key, val);
} catch (Exception e) {
e.printStackTrace();
}
}
for (String path : list) {
if (path != null) {
File file = new File(path);
builder.addFormDataPart("attachmentFile", file.getName(), RequestBody.create(MEDIA_TYPE_PNG, file));
}
}
//构建请求体
RequestBody requestBody = builder.build();
//构建请求
Request request = new Request.Builder()
.url(url)//地址
.post(requestBody)//添加请求体
.build();
OK_HTTP_CLIENT.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println(e.toString());
Log.e("ljl", "errer====" + e.toString());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
Headers responseHeaders = response.headers();
for (int i = 0; i < responseHeaders.size(); i++) {
System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
System.out.println(response.body().string());
Log.e("ljl", "数据信息==" + response.body().string());
}
});
}
简单的使用就完成了