首先要在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格式化

Android如何使用OKHttp的更多相关文章

  1. Https系列之四:https的SSL证书在Android端基于okhttp,Retrofit的使用

    Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...

  2. android 开发 - 使用okhttp框架封装的开发框架

    概述 在android开发中经常要访问网络,目前最流行的网络访问框架就是Okhttp了,然而我们在具体使用时,往往仍然需要二次封装.我使用Builder设计模式进行了封装形成oknet开源库. 介绍 ...

  3. Android中使用OKHttp上传图片,从相机和相册中获取图片并剪切

    效果:注意:1:网络权限<;;;); intent.putExtra(); ); intent.putExtra(); intent.putExtra(, byteArrayOutputStre ...

  4. 浅谈Android studio中OKHttp安装及简单使用

    Google貌似在6.0版本里面删除了HttpClient相关API,鉴于okhttp的口碑相当好,介绍一下OKHttp的安装及使用: 一.安装 对于Android Studio的用户,在Projec ...

  5. 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据

     目录 前言 1 Get方式和Post方式接口说明 2 OkHttp库简单介绍及环境配置 3 具体实现 前言 本文具体实现思路和大部分代码参考自<第一行代码>第2版,作者:郭霖:但是文中讲 ...

  6. 我的 Android 学习笔记-Okhttp 的使用(译)

    okhttp 已经是非常流行的网络请求库了.网上介绍的文章非常之多,但感觉都不是特别系统.遂想到官方应该有介绍的文档,仔细寻找一番,果然.但可惜是英文的,于是就大致翻译了一下,权当做笔记了. 1.Ca ...

  7. Android网络框架OkHttp之get请求(源码初识)

    概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...

  8. Android开发之OkHttp介绍

    要论时下最火的网络请求框架,当属OkHttp了.自从Android4.4开始,google已经开始将源码中的HttpURLConnection替换为OkHttp,而在Android6.0之后的SDK中 ...

  9. android访问网络--okhttp

    import com.squareup.okhttp.MediaType;import com.squareup.okhttp.OkHttpClient;import com.squareup.okh ...

随机推荐

  1. [hdu4888]最大流,判断最大流唯一性

    题意:给一个n*m的矩形,往每个格子填0-k的数字,使得对第i行和为row[i],第i列和为col[i],问是否存在方案,方案是否唯一,如果方案唯一则输出具体方案. 思路:首先根据问题提取对象,行.列 ...

  2. beego中Controller的GetControllerAndAction方法

    beego中Controller的GetControllerAndAction方法 GetControllerAndAction方法在beego中的源码 // GetControllerAndActi ...

  3. .NET Core接入ElasticSearch 7.5

    写在前面 最近一段时间,团队在升级ElasticSearch(以下简称ES),从ES 2.2升级到ES 7.5.也是这段时间,我从零开始,逐步的了解了ES,中间也踩了不少坑,所以特地梳理和总结一下相关 ...

  4. 通过PAML中的CODEML模块计算dnds的过程以及踩坑

    最近帮女朋友做毕业设计的时候用到了 PAML这个软件的codeml功能,发现网上相关的资料很少,于是把自己踩的一些坑分享一下,希望能帮到其他有相同困难的人 一.下载与安装 PAML软件下载地址 htt ...

  5. springData表关系:一对多

    一.编写实体类进行表关联 1.在一张表的关联属性上添加@OneToMany注解(关联属性用来记录多的一方的信息,是个集合,一般用set) 2.在另一个实体类的关联属性上添加@ManyToOne注解和  ...

  6. 初识spring boot maven管理--使用spring-boot-starter-parent

    springboot官方推荐我们使用spring-boot-starter-parent,spring-boot-starter-parent包含了以下信息: 1.使用java6编译级别 2.使用ut ...

  7. windows下node配置npm全局路径(踩坑)

    事情的起因是:Koa要求v7.6.0以上的nodejs. 但是window环境下升级node不容易,试过npm install -g n 和n stable等命令无效,而网上推荐的nvm并不支持win ...

  8. noi7219 复杂的整数划分问题

    noi7219 复杂的整数划分问题 #include <bits/stdc++.h> using namespace std; ; int dp1[maxn][maxn], dp2[max ...

  9. String的正则函数

    String的正则函数: 查找敏感词: 4种情况 1. 查找一个固定的敏感词的位置i: var i=str.indexOf("敏感词",fromi) 在str中,从fromi位置开 ...

  10. Django之url反向解析

    在urls.py文件中,在进行url映射时,为请求的url命个名,以便在模板页面或者views.py视图中可以进行反向解析,同时在修改了url映射的请求路径,名称不变的情况下,不再修改模板页面或者视图 ...