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格式化
Android如何使用OKHttp的更多相关文章
- Https系列之四:https的SSL证书在Android端基于okhttp,Retrofit的使用
Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...
- android 开发 - 使用okhttp框架封装的开发框架
概述 在android开发中经常要访问网络,目前最流行的网络访问框架就是Okhttp了,然而我们在具体使用时,往往仍然需要二次封装.我使用Builder设计模式进行了封装形成oknet开源库. 介绍 ...
- Android中使用OKHttp上传图片,从相机和相册中获取图片并剪切
效果:注意:1:网络权限<;;;); intent.putExtra(); ); intent.putExtra(); intent.putExtra(, byteArrayOutputStre ...
- 浅谈Android studio中OKHttp安装及简单使用
Google貌似在6.0版本里面删除了HttpClient相关API,鉴于okhttp的口碑相当好,介绍一下OKHttp的安装及使用: 一.安装 对于Android Studio的用户,在Projec ...
- 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
目录 前言 1 Get方式和Post方式接口说明 2 OkHttp库简单介绍及环境配置 3 具体实现 前言 本文具体实现思路和大部分代码参考自<第一行代码>第2版,作者:郭霖:但是文中讲 ...
- 我的 Android 学习笔记-Okhttp 的使用(译)
okhttp 已经是非常流行的网络请求库了.网上介绍的文章非常之多,但感觉都不是特别系统.遂想到官方应该有介绍的文档,仔细寻找一番,果然.但可惜是英文的,于是就大致翻译了一下,权当做笔记了. 1.Ca ...
- Android网络框架OkHttp之get请求(源码初识)
概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...
- Android开发之OkHttp介绍
要论时下最火的网络请求框架,当属OkHttp了.自从Android4.4开始,google已经开始将源码中的HttpURLConnection替换为OkHttp,而在Android6.0之后的SDK中 ...
- android访问网络--okhttp
import com.squareup.okhttp.MediaType;import com.squareup.okhttp.OkHttpClient;import com.squareup.okh ...
随机推荐
- [hdu5396 Expression]区间DP
题意:给一个表达式,求所有的计算顺序产生的结果总和 思路:比较明显的区间dp,令dp[l][r]为闭区间[l,r]的所有可能的结果和,考虑最后一个符号的位置k,k必须在l,r之间,则l≤k<r, ...
- docker push的时候提示requested access to the resource is denied
参考:http://blog.csdn.net/baidu_19473529/article/details/70156144 上面的信息显示是拒接访问,因为tag的名字斜线前面部分a10309076 ...
- @vue/cli 4.0.5 学习记录
1. Vue CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令.Vue CLI 插件的名字以 @vue/cli-plugin- (内建插件) 或 vue-cli ...
- for循环中break和continue的区别
break 会立即退出循环,强制执行循环后面的语句 默认只会终止紧邻的循环,如果要终止其他循环,需要给循环起名字 例如: name:for(var i = 0; i < 5; i++){ for ...
- COCO数据集提取特定多个类并在YOLO-V3上训练
先占个地方,有空再写 ` import os Dir = './coco_class_6/Annotations/val2014' ImageDir = './coco_class_6/images/ ...
- Spring全家桶——SpringBoot之AOP详解
Spring全家桶--SpringBoot之AOP详解 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方 ...
- 解决You should consider upgrading via the 'python -m pip install --upgrade pip' command. (pip工具版本较低导致)
步骤1: 找到pip- 版本号 dist-info 文件夹 操作: 在python的安装目录下的Lib文件下的site-packages文件夹下找到 ip- 版本号 dist-info 文件夹 ...
- Java——使用ObjectMapper.writeValueAsString时报错The type com.fasterxml.jackson.core.JsonProcessingException cannot be resolved. It is indirectly referenced from required .class files
报错信息: The type com.fasterxml.jackson.core.JsonProcessingException cannot be resolved. It is indirect ...
- centOS 6.8下使用Gparted进行分区扩容
centOS 6.8下使用Gparted进行分区扩容 机器环境:windows上运行的VMware虚拟机,系统为centOS 6.8. 由于前期分区分配空间过小,无法满足后续的数据存储预期,所 ...
- Mycat-多实例的搭建
1. 基础环境准备1.1 环境准备:两台虚拟机 db01 db02每台创建四个mysql实例:3307 3308 3309 33101.2 删除历史环境:pkill mysqldrm -rf /dat ...