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'
}然后點(diǎn)擊 sync now
二,配置權(quán)限:
在AndroidManifest.xml中添加權(quán)限:
<uses-permission android:name="android.permission.INTERNET" />
否則會(huì)報(bào)以下錯(cuò)誤:
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;
});
//給按鈕增加點(diǎn)擊事件
Button myButton = findViewById(R.id.apibutton);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 處理點(diǎn)擊事件
doGetData();
}
});
}
//以get方式訪問互聯(lián)網(wǎng)上的頁面,并返回?cái)?shù)據(jù)
private void doGetData() {
Toast.makeText(MainActivity.this, "按鈕被點(diǎn)擊了!", Toast.LENGTH_LONG).show();
//1.創(chuàng)建HttpClient對(duì)象
OkHttpClient okHttpClient = new OkHttpClient();
//2.獲取request對(duì)象
Request.Builder builder = new Request.Builder().url("https://www.bilibili.com/");
Request request = builder.build();
//3.異步請(qǐng)求發(fā)起
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("網(wǎng)絡(luò)請(qǐng)求返回結(jié)果:");
System.out.println(result);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
}
}四,測(cè)試效果:
界面:

執(zhí)行結(jié)果:

到此這篇關(guān)于android: 用okhttp通信的文章就介紹到這了,更多相關(guān)android okhttp通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android使用 Spinner控件實(shí)現(xiàn)下拉框功能
Spinner是android的一種控件,用它我們可以實(shí)現(xiàn)下拉框。下面通過實(shí)例代碼給大家介紹Android使用 Spinner控件實(shí)現(xiàn)下拉框功能,感興趣的朋友一起看看吧2018-08-08
Android刮刮卡實(shí)現(xiàn)原理與代碼講解
這篇文章主要為大家詳細(xì)介紹了Android刮刮卡實(shí)現(xiàn)原理、實(shí)現(xiàn)原理步驟以及代碼講解,感興趣的小伙伴們可以參考一下2016-04-04
Android UI之ImageView實(shí)現(xiàn)圖片旋轉(zhuǎn)和縮放
這篇文章主要介紹了Android UI之ImageView實(shí)現(xiàn)圖片旋轉(zhuǎn)和縮放的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-09-09
android Activity相對(duì)布局的使用方法
Activity相對(duì)布局控件的位置是與其周圍控件的位置相關(guān)的,從名字可以看出來,這些位置都是相對(duì)的,確定出了其中一個(gè)控件的位置就可以確定另一個(gè)控件的位置,下面用實(shí)例說明Activity相對(duì)布局的使用方法2013-11-11
Java4Android開發(fā)教程(三)java基本概念
本文介紹了Java4Android的基本概念,都是開發(fā)必備的基礎(chǔ)知識(shí),希望能對(duì)大家有所幫助2014-10-10

