163人参与 • 2025-04-26 • Android
1,库地址:
https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
2,安装
在build.gradle的dependencies中增加一行:
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
如下:
dependencies {
implementation libs.appcompat
implementation libs.material
implementation libs.activity
implementation libs.constraintlayout
testimplementation libs.junit
androidtestimplementation libs.ext.junit
androidtestimplementation libs.espresso.core
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
}然后点击 sync now
在androidmanifest.xml中添加权限:
<uses-permission android:name="android.permission.internet" />
否则会报以下错误:
java.lang.securityexception: permission denied (missing internet permission?)
package com.example.okdemo1;
import android.os.bundle;
import android.view.view;
import android.widget.button;
import android.widget.toast;
import androidx.activity.edgetoedge;
import androidx.annotation.nonnull;
import androidx.appcompat.app.appcompatactivity;
import androidx.core.graphics.insets;
import androidx.core.view.viewcompat;
import androidx.core.view.windowinsetscompat;
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);
edgetoedge.enable(this);
setcontentview(r.layout.activity_main);
viewcompat.setonapplywindowinsetslistener(findviewbyid(r.id.main), (v, insets) -> {
insets systembars = insets.getinsets(windowinsetscompat.type.systembars());
v.setpadding(systembars.left, systembars.top, systembars.right, systembars.bottom);
return insets;
});
//给按钮增加点击事件
button mybutton = findviewbyid(r.id.apibutton);
mybutton.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view v) {
// 处理点击事件
dogetdata();
}
});
}
//以get方式访问互联网上的页面,并返回数据
private void dogetdata() {
toast.maketext(mainactivity.this, "按钮被点击了!", toast.length_long).show();
//1.创建httpclient对象
okhttpclient okhttpclient = new okhttpclient();
//2.获取request对象
request.builder builder = new request.builder().url("https://www.bilibili.com/");
request request = builder.build();
//3.异步请求发起
okhttpclient.newcall(request).enqueue(new callback() {
@override
public void onfailure(@nonnull call call, @nonnull ioexception e) {
}
@override
public void onresponse(@nonnull call call, @nonnull response response) throws ioexception {
try {
string result = response.body().string();
//如果需要更新主线程的 ui 如果使用 rxjava 以及 retrofit 就不用这样处理了
system.out.println("网络请求返回结果:");
system.out.println(result);
} catch (ioexception e) {
throw new runtimeexception(e);
}
}
});
}
}
界面:

执行结果:

到此这篇关于android: 用okhttp通信的文章就介绍到这了,更多相关android okhttp通信内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论