zoukankan      html  css  js  c++  java
  • 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格式化

  • 相关阅读:
    素数路径Prime Path POJ3126 素数,BFS
    Fliptile POJ3279 DFS
    Find the Multiple POJ1426
    洗牌Shuffle'm Up POJ3087 模拟
    棋盘问题 POJ1321 DFS
    抓住那只牛!Catch That Cow POJ3278 BFS
    Dungeon Master POJ2251 三维BFS
    Splitting into digits CodeForce#1104A
    Ubuntu下手动安装Nvidia显卡驱动
    最大连续子序列和
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13076447.html
Copyright © 2011-2022 走看看