Get请求
package com.bw.day3_okhttp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void getclick(View view){
//创建客户端
OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
//创建请求
Request build = new Request.Builder()
.url("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1")
.get()
.build();
//连接响应
okHttpClient.newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Log.i("-0----Request",string);
}
});
}
}
Post请求
public void postclick(View view) {
//创建客户端
OkHttpClient build = new OkHttpClient.Builder().build();
//创建表单
FormBody formBody = new FormBody.Builder()
.add("username","10")
.add("password","1")
.build();
//创建请求对象
Request builder = new Request.Builder()
.url("https://www.wanandroid.com/user/login")
.post(formBody)
.build();
//连接响应
build.newCall(builder).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.i("-------post",response.body().string());
}
});
}
Get下载
public void downclick(View view) {
//创建客户端
OkHttpClient build = new OkHttpClient.Builder().build();
Request builder = new Request.Builder()
.url("https://img1.baidu.com/it/u=1472391233,99561733&fm=253&fmt=auto&app=120&f=JPEG?w=889&h=500")
.get()
.build();
build.newCall(builder).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
InputStream inputStream = response.body().byteStream();
byte[] bytes = new byte[1024];
int len=0;
File file = new File("/sdcard/hua.jpg");
FileOutputStream fileOutputStream = new FileOutputStream(file);
while ((len = inputStream.read(bytes)) != -1){
fileOutputStream.write(bytes,0,len);
}
}
});
}
Post上传
public void upclick(View view) {
//创建客户端
OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
//设置表单
MultipartBody builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file","hua.jpg", RequestBody.create(MediaType.parse("media/jpg"),new File("/sdcard/hua.jpg")))
.build();
//设置请求
Request request = new Request.Builder()
.url("http://10.161.11.21/asd/")
.post(builder)
.build();
okHttpClient.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.code() == 200) {
Log.i("------","上传成功");
}
}
});
}
单例工具类里面只有GET POST请求
package com.bw.day3_okhttp.utils;
import android.os.Build;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.RequiresApi;
import com.bw.day3_okhttp.callback.MyCallBack;
import java.io.IOException;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class HttpUtils {
OkHttpClient okHttpClient;
Handler handler=new Handler();
private HttpUtils() {
okHttpClient=new OkHttpClient.Builder()
.connectTimeout(2, TimeUnit.SECONDS)
.writeTimeout(2, TimeUnit.SECONDS)
.readTimeout(2, TimeUnit.SECONDS)
.build();
}
private static HttpUtils httpUtils=null;
public static HttpUtils getInstance(){
if(httpUtils==null){
httpUtils=new HttpUtils();
}
return httpUtils;
}
//get请求
public void doget(String path, MyCallBack callBack){
//设置请求
Request builder = new Request.Builder()
.url(path)
.get()
.build();
//连接响应
okHttpClient.newCall(builder).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
callBack.ok(string);
}
});
}
});
}
//post请求
public void dopost(String path, FormBody formBody ,MyCallBack myCallBack){
//设置请求
Request builder = new Request.Builder()
.url(path)
.post(formBody)
.build();
//连接响应
okHttpClient.newCall(builder).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
myCallBack.ok(string);
}
});
}
});
}
}
工具类的调用
public void get_click(View view){
HttpUtils.getInstance().doget(" http://43.143.146.165:7777/foods/getFoods?currentPage=1&pageSize=10", new MyCallBack() {
@Override
public void ok(String json) {
Log.i("-----json",json);
}
@Override
public void error(String json) {
}
});
}
public void post_click(View view){
FormBody build = new FormBody.Builder()
.add("pageSize", "10")
.add("currentPage", "1")
.build();
HttpUtils.getInstance().dopost("http://43.143.146.165:7777/foods/postFoods ",build, new MyCallBack() {
@Override
public void ok(String json) {
Log.i("-----json",json);
}
@Override
public void error(String json) {
}
});
}
单例有上传 下载
package com.bw.day3_okhttp.utils;
import android.os.Build;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.RequiresApi;
import com.bw.day3_okhttp.callback.MyCallBack;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class HttpUtils {
OkHttpClient okHttpClient;
Handler handler=new Handler();
private HttpUtils() {
okHttpClient=new OkHttpClient.Builder()
.connectTimeout(2, TimeUnit.SECONDS)
.writeTimeout(2, TimeUnit.SECONDS)
.readTimeout(2, TimeUnit.SECONDS)
.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))//log日志拦截器
.build();
}
private static HttpUtils httpUtils=null;
public static HttpUtils getInstance(){
if(httpUtils==null){
httpUtils=new HttpUtils();
}
return httpUtils;
}
public void doget(String path, MyCallBack callBack){
//设置请求
Request builder = new Request.Builder()
.url(path)
.get()
.build();
//连接响应
okHttpClient.newCall(builder).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
callBack.ok(string);
}
});
}
});
}
public void dopost(String path, FormBody formBody ,MyCallBack myCallBack){
//设置请求
Request builder = new Request.Builder()
.url(path)
.post(formBody)
.build();
//连接响应
okHttpClient.newCall(builder).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
myCallBack.ok(string);
}
});
}
});
}
//上传
public void updost(String path, FormBody formBody ){
//设置请求
Request request = new Request.Builder()
.url(path)
.post(formBody)
.build();
okHttpClient.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.code() == 200) {
Log.i("------","上传成功");
}
}
});
}
//下载
public void download(String path){
Request builder = new Request.Builder()
.url(path)
.get()
.build();
okHttpClient.newCall(builder).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
InputStream inputStream = response.body().byteStream();
byte[] bytes = new byte[1024];
int len=0;
File file = new File("/sdcard/hua.jpg");
FileOutputStream fileOutputStream = new FileOutputStream(file);
while ((len = inputStream.read(bytes)) != -1){
fileOutputStream.write(bytes,0,len);
}
}
});
}
}
单例里okHttpClient创建
private HttpUtils() {
okHttpClient=new OkHttpClient.Builder()
.connectTimeout(2, TimeUnit.SECONDS)
.writeTimeout(2, TimeUnit.SECONDS)
.readTimeout(2, TimeUnit.SECONDS)
.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))//log日志拦截器
.addInterceptor(new Interceptor() {//设置自定义拦截器
@Override
public Response intercept(Chain chain) throws IOException {
//设置token拦截
Request request = chain.request().newBuilder().addHeader("appversion","1.0").build();
Response response = chain.proceed(request);
Log.i("---sss",response.code()+"");
return response;
}
})
.build();
}