Android使用okhttp通信的方法
一,安装第三方库:
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通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Android 中 ActivityLifecycleCallbacks的实例详解
这篇文章主要介绍了Android 中 ActivityLifecycleCallbacks的实例详解的相关资料,希望通过本文大家能掌握这部分内容,需要的朋友可以参考下2017-09-09
Android开发笔记之:ListView刷新顺序的问题详解
本篇文章是对Android中ListView刷新顺序的问题进行了详细的分析介绍,需要的朋友参考下2013-05-05
新浪微博第三方登录界面上下拉伸图片之第三方开源PullToZoomListViewEx(一)
PullZoomView要实现两类,一类是典型的Android ListView,另外一类是Android 的scroll view。本文先介绍PullZoomView在ListView上的实现:PullToZoomListViewEx2015-12-12
Android实现Tab布局的4种方式(Fragment+TabPageIndicator+ViewPager)
Android现在实现Tab类型的界面方式越来越多,本文详细介绍了Android实现Tab布局的4种方式,具有一定的参考价值,有兴趣的可以了解一下。2016-11-11


最新评论