Android如何使用OKHttp

首先要在build.gradle里面写入
在这里插入图片描述

    // 添加OKHttp支持
    implementation("com.squareup.okhttp3:okhttp:4.3.1")

下面是代码

下面是activity的java代码

package com.example.okhttpdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class Main2Activity extends AppCompatActivity {

    //需要寻找的网页,可以复制下来去看一下
    //可以去   http://www.bejson.com/   这个网页把json格式化
    String getTodayGank = "http://gank.io/api/today";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        //做一个按钮的点击事件
        Button btn = findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //OKHttp一定要用另一个线程,如果用主线程可能会线程堵塞报错
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        //实例化  里面可能会出现异常,需要try  catch
                        OkHttpClient client = new OkHttpClient();
                        //建立一个Request  通过Builder方法.Url里面填的就是json网址.build创建
                        Request request = new Request.Builder().url(getTodayGank).build();
                        try {
                            //Response是okhttp实例化,并且调用Request。执行后返回的结果
                            Response response = client.newCall(request).execute();
                            String s = response.body().string();//获取到的json数据
                            JSONObject jsonObject = new JSONObject(s);//转成json
                            JSONObject result = jsonObject.getJSONObject("results");//获取到名字为results的数据
                            JSONArray android = result.getJSONArray("Android");//在获取到results下面的Android的数据(Android有很多数据,以数组方式存放,所以用JsonArray)
                            for (int i=0;i<android.length();i++){
                                //日志输出
                                //获取jsonArray里面的数据需要用.getJSONObject(i),i为下标,下面名叫desc的数据,getString变成String格式进行输出
                                Log.i("TodayGank",android.getJSONObject(i).getString("desc").toString());
                                
                            Toast.makeText(Main2Activity.this, "请求成功", Toast.LENGTH_SHORT).show();
                            }
                        } catch (IOException | JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }
}

XMl布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main2Activity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        tools:layout_editor_absoluteX="99dp"
        tools:layout_editor_absoluteY="221dp" />
</LinearLayout>

运行后点击按钮
在这里插入图片描述
查看的时候,打开日志猫

在这里插入图片描述

进行一下筛选,否则不容易看到log

大家也可以先看一下网站的内容,
需要寻找的网页
http://gank.io/api/today
可以去 http://www.bejson.com/ 这个网页把json格式化

发布了1080 篇原创文章 · 获赞 845 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/a1439775520/article/details/103963074
今日推荐