使用OkHttp3框架获取服务器数据

本文详细介绍如何使用OkHttp3框架进行网络请求,包括导入jar包、发起GET和POST请求的具体步骤及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🍅 作者简介:敖 广,优快云2020博客之星亚军🏆、博客专家💪、个人成长专家✌

🍅 多年工作总结:Java学习路线总结,逆袭Java架构师

🍅 技术交流:定期更新Java硬核干货,不定期送书活动、助你实现技术飞跃

🍅 关注公众号【程序技术圈】,回复 面试题 ,获取《108道Java经典面试题总结(附答案)》pdf,复习方便,面试利器!

OkHttp3框架的使用

1.导入okhttp的jar包

切换到project下,将okhttp-3.2.0.jar和okio-1.12.0放到app/libs下,为项目导入该jar包,右键jar包Add As Library选择需要导入的项目即可成功导入。

或在需要导入的项目下的build.gradle加入如下代码(dependencies类):


 
implementation files('D:/android_studio/cunfang/MyApplication/app/libs/okhttp-3.2.0.jar')
implementation files('D:/android_studio/cunfang/MyApplication/app/libs/okio-1.12.0.jar')

这里的路径是你jar包的路径

2.发起网络请求

Get请求方式:


public void OkHttpGet()
{
new Thread(){
@Override
public void run() {
//获取一个OkHttpClient对象
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder().url("这里是接口地址").build();
try {

Response response = client.newCall(request).execute();
if(response.isSuccessful())
{
//如果请求成功,通知Handler更新数据
result="请求结果:"+response.body().string();
handler.sendEmptyMessage(0x100);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}

在子线程中进行耗时操作后,使用Handler发送消息通知UI线程更新

Post请求方式:


public void OkhttpPost(){
new Thread(){
@Override
public void run() {
OkHttpClient client = new OkHttpClient();
//创建一个表单对象
FormBody.Builder formBody = new FormBody.Builder();

formBody.add("UserName","张三");
formBody.add("PassWord","123456");

Request request = new Request.Builder().url("这里是接口地址")
.post(formBody.build())
.build();
try {

Response response = client.newCall(request).execute();
if(response.isSuccessful())
{
result="User结果:"+response.body().string();
handler.sendEmptyMessage(0x100);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}

okhttp3默认请求方式是Get,Post请求方式需要声明

返回的response中,response.code()为请求码,成功默认返回200。

response.message()为返回结果,成功默认返回OK。

response.body()为返回内容,获取字符串时使用response.body().string()而response.body().toString()方法会导致请求结果乱码。

🍅 作者简介:敖 广,优快云2020博客之星亚军🏆、博客专家💪、个人成长专家✌

🍅 多年工作总结:Java学习路线总结,逆袭Java架构师

🍅 技术交流:定期更新Java硬核干货,不定期送书活动、助你实现技术飞跃

🍅 关注公众号【程序技术圈】,回复 面试题 ,获取《108道Java经典面试题总结(附答案)》pdf,复习方便,面试利器!

Android中,使用OKHTTP作为网络请求库非常常见,因为它高效、简单并且易于集成。以下是基本的步骤来实现登录注册功能: 1. **添加依赖**: 首先,在项目级build.gradle文件中添加OkHttp和它的助手库OkHttp3LoggingInterceptor(用于打印日志): ```groovy implementation 'com.squareup.okhttp3:okhttp:4.x.y' implementation 'com.squareup.okhttp3:logging-interceptor:4.x.y' ``` 2. **创建HttpClient实例**: 创建一个OkHttpClient实例,并设置超时时间和缓存策略: ```java OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(15, TimeUnit.SECONDS) .cache(new Cache(getCacheDir(), cacheSize)) .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) .build(); ``` 3. **构建Request**: 对于登录注册,你需要构造一个`Request`对象,包含URL、请求体(POST请求可能需要)、以及认证信息(如Basic Auth): ```java Request loginRequest = new Request.Builder() .url("https://your-api.com/login") .post(RequestBody.create(MediaType.parse("application/json"), /* 登录数据如{"username": "user", "password": "pass"} */)) .header("Authorization", "Basic " + Base64.encodeToString(authCredentials, Base64.DEFAULT)) .build(); ``` 4. **发送请求并处理响应**: 使用`client.newCall(loginRequest)`发起请求,然后通过`call.execute()`获取Response: ```java Call call = client.newCall(loginRequest); Response response = call.execute(); if (response.isSuccessful()) { // 处理返回的数据(JSON解析、状态码检查等) } else { // 错误处理 } ``` 5. **错误处理**: 通常需要检查响应的状态码,并处理可能出现的各种错误,比如网络中断、服务器未响应等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值