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
二,配置權(quán)限:
在AndroidManifest.xml中添加權(quán)限:
<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方式訪問互聯(lián)網(wǎng)上的頁面,并返回數(shù)據(jù)
private void doGetData() {
Toast.makeText(MainActivity.this, "按鈕被點擊了!", Toast.LENGTH_LONG).show();
//1.創(chuàng)建HttpClient對象
OkHttpClient okHttpClient = new OkHttpClient();
//2.獲取request對象
Request.Builder builder = new Request.Builder().url("https://www.bilibili.com/");
Request request = builder.build();
//3.異步請求發(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ò)請求返回結(jié)果:");
System.out.println(result);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
}
}四,測試效果:
界面:

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

到此這篇關(guān)于android: 用okhttp通信的文章就介紹到這了,更多相關(guān)android okhttp通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android系統(tǒng)開發(fā)中l(wèi)og的使用方法及簡單的原理
LOG是廣泛使用的用來記錄程序執(zhí)行過程的機制,它既可以用于程序調(diào)試,也可以用于產(chǎn)品運營中的事件記錄;在平時開發(fā)過程中經(jīng)常需要與log打交道,所以很有必要了解log的使用方法及簡單的原理,感興趣的朋友可以了解下啊2013-01-01
Android顯示系統(tǒng)SurfaceFlinger分析
本文詳細講解了Android顯示系統(tǒng)SurfaceFlinger,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
Android 中 ActivityLifecycleCallbacks的實例詳解
這篇文章主要介紹了Android 中 ActivityLifecycleCallbacks的實例詳解的相關(guān)資料,希望通過本文大家能掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09
Android開發(fā)筆記之:ListView刷新順序的問題詳解
本篇文章是對Android中ListView刷新順序的問題進行了詳細的分析介紹,需要的朋友參考下2013-05-05
新浪微博第三方登錄界面上下拉伸圖片之第三方開源PullToZoomListViewEx(一)
PullZoomView要實現(xiàn)兩類,一類是典型的Android ListView,另外一類是Android 的scroll view。本文先介紹PullZoomView在ListView上的實現(xiàn):PullToZoomListViewEx2015-12-12
Android實現(xiàn)Tab布局的4種方式(Fragment+TabPageIndicator+ViewPager)
Android現(xiàn)在實現(xiàn)Tab類型的界面方式越來越多,本文詳細介紹了Android實現(xiàn)Tab布局的4種方式,具有一定的參考價值,有興趣的可以了解一下。2016-11-11

