OKHttp是一个十分常用的网络请求框架了,用于android中请求网络。

除了OKHttp,如今Android中主流的网络请求框架有:
在build.gradle 添加如下依赖
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
/**
* 同步Get同求
*
* @param url url
* @return
*/
public String syncGet(String url) {
String result = "";
//1.创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.get()
.build();
final Call call = okHttpClient.newCall(request);
//4.同步调用会阻塞主线程,这边在子线程进行
new Thread(new Runnable() {
@Override
public void run() {
try {
//同步调用,返回Response,会抛出IO异常
Response response = call.execute();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
return result;
}
/**
* 异步Get同求
*
* @param url url
* @return
*/
public void nonSyncGet(String url, Callback responseCallback) {
String result = null;
//1.创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
//2.创建Request对象
Request request = new Request.Builder()
.url(url)
.get()
.build();
Call call =okHttpClient.newCall(request);
call.enqueue(responseCallback);
}
在OkHttp中用Post方法把键值对数据传送到服务器,使用FormBody.Builder创建请求的参数键值,构建一个RequestBody对象,
/**
* 同步Post同求
*
* @param url url
* @return
*/
public String syncPost(String url) {
String result = null;
//1.创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
FormBody.Builder mBuild = new FormBody.Builder();
mBuild.add("name", "tony")
.add("age", "21");
RequestBody requestBody= mBuild.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
result = response.body().string();
} else {
throw new IOException("Unexpected code " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* 异步Post同求
*
* @param url url
* @return
*/
public void nonSyncPost(String url, Callback responseCallback) {
//1.创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
FormBody.Builder mBuild = new FormBody.Builder();
mBuild.add("name", "tony")
.add("age", "21");
RequestBody requestBody= mBuild.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
try {
okHttpClient.newCall(request).enqueue(responseCallback);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Post json
*
* @param url url
* @return
*/
public String postJson(String url, Callback responseCallback) {
String result = null;
String jsonStr = "json";
//1.创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
RequestBody requestBody = RequestBody.create(mediaType, jsonStr);
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
result = response.body().string();
} else {
throw new IOException("Unexpected code " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* Post String
*
* @param url url
* @return
*/
public String postString(String url, Callback responseCallback) {
String result = null;
//1.创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain;charset=utf-8"),
"{username:tony;password:123456}");
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
result = response.body().string();
} else {
throw new IOException("Unexpected code " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* Post 表单
*
* @param url url
* @return
*/
public String postForm(String url, Callback responseCallback) {
String result = null;
//1.创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
MultipartBody.Builder mBuild = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("username", "tony")
.addFormDataPart("password", "123456");
RequestBody requestBody= mBuild.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
result = response.body().string();
} else {
throw new IOException("Unexpected code " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public void uploadFile(String url) {
ArrayList<String> filelist = getFileList();
//1.创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
MultipartBody.Builder multipartBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
for (int i = 0; i < filelist.size(); i++) {
String path = filelist.get(i);
File file = new File(path);
String fileMimeType = getMimeType(file);
//这里获取文件类型,方法自己定义
MediaType mediaType = MediaType.parse(fileMimeType);
RequestBody fileBody = RequestBody.create(mediaType, file);
multipartBody.addFormDataPart("file" + i, file.getName(), fileBody);
}
RequestBody requestBody = multipartBody.build();
Request requestPostFile = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Response response = null;
try {
response = okHttpClient.newCall(requestPostFile).execute();
if (response.isSuccessful()) {
} else {
throw new IOException("Unexpected code " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
}
https://www.jianshu.com/p/bb57bc65e4ce
https://www.jianshu.com/p/b1cf0b574e74
# Android
# okhttp使用
# Android Studio OkHttpClient使用教程详解
# android 使用okhttp可能引发OOM的一个点
# Android使用OkHttp发送post请求
# android 使用OkHttp上传多张图片的实现代码
# Android使用OkHttp进行网络同步异步操作
# Android中okhttp3使用详解
# 表单
# 键值
# 是一个
# 抛出
# 上传文件
# 博文
# 构建一个
# final
# call
# newCall
相关文章:
C++如何使用std::optional?(处理可选值)
如何用PHP快速搭建CMS系统?
长沙做网站要多少钱,长沙国安网络怎么样?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站org新手必看:2024最新搭建流程与模板选择技巧
Swift中switch语句区间和元组模式匹配
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
建设网站制作价格,怎样建立自己的公司网站?
c++怎么用jemalloc c++替换默认内存分配器【性能】
济南网站制作的价格,历城一职专官方网站?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
C#怎么创建控制台应用 C# Console App项目创建方法
香港服务器建站指南:免备案优势与SEO优化技巧全解析
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何在IIS服务器上快速部署高效网站?
小型网站制作HTML,*游戏网站怎么搭建?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
深圳网站制作的公司有哪些,dido官方网站?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
小程序网站制作需要准备什么资料,如何制作小程序?
建站主机空间推荐 高性价比配置与快速部署方案解析
一键网站制作软件,义乌购一件代发流程?
如何在香港免费服务器上快速搭建网站?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
香港服务器选型指南:免备案配置与高效建站方案解析
如何在企业微信快速生成手机电脑官网?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
网站制作公司,橙子建站是合法的吗?
成都网站制作报价公司,成都工业用气开户费用?
h5在线制作网站电脑版下载,h5网页制作软件?
建站之星在线客服如何快速接入解答?
网站按钮制作软件,如何实现网页中按钮的自动点击?
临沂网站制作企业,临沂第三中学官方网站?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
贸易公司网站制作流程,出口贸易网站设计怎么做?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
如何选购建站域名与空间?自助平台全解析
如何在万网主机上快速搭建网站?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
如何快速搭建高效可靠的建站解决方案?
如何做网站制作流程,*游戏网站怎么搭建?
宝塔建站无法访问?如何排查配置与端口问题?
c# 服务器GC和工作站GC的区别和设置
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
建站之星会员如何解锁更多建站功能?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
*请认真填写需求信息,我们会在24小时内与您取得联系。