it编程 > App开发 > Android

Android使用okhttp通信的方法

3人参与 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通信内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Android使用OpenGL和MediaCodec录制功能

04-24

Android实现文件按时间先后顺序排列显示的示例代码

04-24

Android使用SAX解析XML格式数据的操作步骤

04-24

基于Android实现定时刷新功能

04-24

Android实现顶部弧形背景效果

04-24

Kotlin中实现多线程数据刷新的完整方案

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论