欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android如何使用OKHttp

程序员文章站 2024-03-25 11:33:16
...

首先要在build.gradle里面写入
Android如何使用OKHttp

    // 添加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>

运行后点击按钮
Android如何使用OKHttp
查看的时候,打开日志猫

Android如何使用OKHttp

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

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