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

  • 相关阅读:
    拉伸按钮背景图片:stretchableImageWithLeftCapWidth:
    CocoaPods详解之(三)----制作篇
    CocoaPods详解之(二)----进阶篇
    CocoaPods详解之(一)----使用篇
    下载第三方类库编译报错
    XMPP之ios即时通讯客户端开发-创建工程添加XMPPFramework及其他框架(三)
    error: invalid abbreviation code [25] for DIE at 0x0000003e in Assertion failed: (*offset_ptr == end_prologue_offset), function ParsePrologue, file /S
    MAC终端:如何调整字体大小和终端样式
    MAC 安装下载好的.gz包(不像.dmg直接双击就行了)
    页面跳转
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075883.html
Copyright © 2011-2022 走看看