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通信内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论