《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
-
联网请求文本数据
-
大文件下载上传
-
请求图片
=======================================================================
布局文件很简单,只有几个按钮
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity ";
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn= (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
getRequest(“http://api.m.mtime.cn/PageSubArea/TrailerList.api”);
}catch(IOException e)
{
e.printStackTrace();
}
}
});
}
/*
get请求
url网络连接
*/
public void getRequest(String url) throws IOException {
//要有一个客户端,类似于要有一个浏览器
OkHttpClient client = new OkHttpClient.Builder()
.build();
//创建请求内容
Request request = new Request.Builder()
.get()
.url(url)
.build();
//用client去创建请求任务
okhttp3.Call task=client.newCall(request);
//异步请求,发起请求可以继续做其他事情(同步请求,发起请求之后要等数据回来)
task.enqueue(new Callback() {
@Override
public void onFailure(okhttp3.Call call, IOException e) {
Log.d(TAG,“onFailure->”+e.toString());
}
@Override
public void onResponse(okhttp3.Call call, Response response) throws IOException {
ResponseBody body=response.body();
Log.d(TAG,“onSuccess->”+body.string());
}
});
}
}
运行结果,点击按钮后,logcat打印出获取的内容
post请求和get请求不同的是post需要一个RequestBody的参数。RequestBody是一个抽象类,分别有FormBody和MultipartBody两个子类。FormBody,用于传输表单类型的参数。MultipartBody则支持多类型的参数传递。
public void post(String url){
//创建一个RequestBody对象
RequestBody body = new FormBody.Builder()
.add(“date”, “2018-08-13”)
.build();
//先有Client
OkHttpClient client = new OkHttpClient.Builder()
.build();
//创建请求
Request request=new Request.Builder()
.url(url)
.post(body)
.build();
//创建请求任务
okhttp3.Call task=client.newCall(request);
task.enqueue(new Callback() {
@Override
public void onFailure(okhttp3.Call call, IOException e) {
}
@Override
public void onResponse(okhttp3.Call call, Response response) throws IOException {
ResponseBody body=response.body();
Log.d(TAG,“onSuccess->”+body.string());
}
});
}