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格式化

  • 相关阅读:
    SAP S/4HANA extensibility扩展原理介绍
    SAP CRM系统订单模型的设计与实现
    使用nodejs代码在SAP C4C里创建Individual customer
    SAP Cloud for Customer Account和individual customer的区别
    Let the Balloon Rise map一个数组
    How Many Tables 简单并查集
    Heap Operations 优先队列
    Arpa’s obvious problem and Mehrdad’s terrible solution 思维
    Passing the Message 单调栈两次
    The Suspects 并查集
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946970.html
Copyright © 2011-2022 走看看