网站优化可以做哪些优化,网站建设与网页设计总结,网站空间内存,网站建设工具品牌有哪些文章目录 一、前言二、应用1、添加权限AndroidManifest.xml2、添加依赖okhttp33、编写界面文件activity_main.xml4、编写Activity代码 三、效果 一、前言
OkHttp是由Square公司开发的用于Java和Android的开源HTTP客户端库。它被广泛用于在Java和Android应用程序中进行HTTP请求… 文章目录 一、前言二、应用1、添加权限AndroidManifest.xml2、添加依赖okhttp33、编写界面文件activity_main.xml4、编写Activity代码 三、效果 一、前言
OkHttp是由Square公司开发的用于Java和Android的开源HTTP客户端库。它被广泛用于在Java和Android应用程序中进行HTTP请求。OkHttp支持HTTP/2、SPDY和HTTP/1.1协议并具有连接池、透明gzip压缩和响应缓存等功能。
下面是一个简单的示例演示了如何在Java中使用OkHttp进行GET请求
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;public class OkHttpExample {public static void main(String[] args) {OkHttpClient client new OkHttpClient();Request request new Request.Builder().url(https://api.example.com/data).build();try {Response response client.newCall(request).execute();String responseBody response.body().string();System.out.println(responseBody);} catch (IOException e) {e.printStackTrace();}}
}在这个例子中
我们创建了一个OkHttpClient实例。 我们创建了一个指定了要请求的URL的Request对象。 我们使用client.newCall(request).execute()来同步执行请求。这个方法返回一个Response对象。 我们使用response.body().string()将响应主体提取为字符串。
二、应用
1、添加权限AndroidManifest.xml
这个文件包含了应用程序的各种信息包括应用程序的包名、应用程序图标、应用程序需要的权限、应用程序中定义的组件如活动、服务、广播接收器、应用程序的版本信息等。
在AndroidManifest.xml文件中添加网络请求权限
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.myapplication!--网络请求权限--uses-permission android:nameandroid.permission.INTERNET/applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/Theme.MyApplicationactivity android:name.MainActivityintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity/application/manifest2、添加依赖okhttp3
根目录下的 build.gradle 文件通常用于配置整个项目的构建信息例如项目的构建脚本版本、仓库地址、全局依赖项等。
在build.gradle中添加
dependencies {implementation androidx.appcompat:appcompat:1.1.0implementation com.google.android.material:material:1.1.0implementation androidx.constraintlayout:constraintlayout:1.1.3testImplementation junit:junit:4.androidTestImplementation androidx.test.ext:junit:1.1.1androidTestImplementation androidx.test.espresso:espresso-core:3.2.0// okhttp3 请求依赖implementation com.squareup.okhttp3:okhttp:4.9.1
}3、编写界面文件activity_main.xml
“activity_main.xml” 文件是 Android 应用程序中的一个布局文件用于定义应用程序的主界面布局。它位于 “res/layout” 目录下。
?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityTextViewandroid:idid/content_testandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textHello World!app:layout_constraintBottom_toBottomOfparentapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toTopOfparent /Buttonandroid:idid/btn_testandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textstring/but_testapp:layout_constraintBottom_toBottomOfparent//androidx.constraintlayout.widget.ConstraintLayout4、编写Activity代码
创建MainActivity.java实现接口请求响应逻辑。
package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.util.Log;
import android.view.View;import android.widget.TextView;import org.jetbrains.annotations.NotNull;import java.io.IOException;import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG xxxxxxx;private final OkHttpClient client new OkHttpClient();private TextView tvContent;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.btn_test).setOnClickListener(this);tvContent findViewById(R.id.content_test);}// 点击后执行哪段代码Overridepublic void onClick(View v) {okHttpAsynchronousDemo();}// okHttp同步方式请求private void okHttpDemo() {Request request new Request.Builder().url(https://reqres.in/api/users?page2).build();tvContent.setText(同步请求中.......);// 同步代码中必须开线程改变页面uinew Thread(new Runnable() {Overridepublic void run() {try {// 发起请求并返回数据Response response client.newCall(request).execute();String responseBody response.body().string();System.out.println(responseBody);runOnUiThread(new Runnable() {Overridepublic void run() {tvContent.setText(同步请求成功 responseBody);}});} catch (IOException e) {// 请求失败逻辑e.printStackTrace();}}}).start();}// okHttp异步方式请求private void okHttpAsynchronousDemo() {// 发起请求Request request new Request.Builder().url(https://reqres.in/api/users?page2).build();tvContent.setText(异步请求中.......);client.newCall(request).enqueue(new Callback() {Overridepublic void onResponse(NotNull Call call, Response response) throws IOException {// 处理请求成功的响应String responseBody response.body().string();// 在这里处理响应数据System.out.println(responseBody);runOnUiThread(new Runnable() {Overridepublic void run() {tvContent.setText(异步请求成功 responseBody);}});}Overridepublic void onFailure(NotNull Call call, IOException e) {// 处理请求失败e.printStackTrace();}});}// url 拼接方法private void okHttpParams(){HttpUrl.Builder builder HttpUrl.parse(https://reqres.in/api/users).newBuilder();builder.addQueryParameter(page, 2);String url builder.build().toString();Log.d(TAG, url);}
}三、效果