开发者

Android使用okhttp通信的方法

目录
  • 一,安装第三方库:
  • 二,配置权限:
  • 三,代码:
  • 四,测试效果:

一,安装第三方库:

1,库地址:

https://mvnrepos编程itory.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(sajsvedInstanceState)编程客栈;
        EdgeToEdge.enable(this);
        setContentView(R.lay编程out.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 requhttp://www.devze.comest = 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通信的方法

到此这篇关于android: 用okhttp通信的文章就介绍到这了,更多相关android okhttp通信内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜