build.gradle新加:

implementation 'com.squareup.okhttp3:okhttp:3.8.0'

在AndroidManifest.xml添加权限

<uses-permission android:name="android.permission.INTERNET"/>

源码如下:

HttpRequest.java

package com.example.myclient.http;import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;public class HttpRequest {private Call mCall;public HttpRequest(String url) {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().get().url(url).build();mCall = client.newCall(request);}public void request(Callback callback){if(mCall != null){if(mCall.isExecuted()){mCall.clone().enqueue(callback);}else{mCall.enqueue(callback);}}}
}

MainActivity.java

package com.example.myclient;import android.os.Bundle;import com.example.myclient.http.HttpRequest;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;import java.io.IOException;import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;public class MainActivity extends AppCompatActivity {private static final String URL = "http://192.168.20.59/";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);FloatingActionButton fab = findViewById(R.id.fab);fab.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show();}});final HttpRequest request = new HttpRequest(URL);findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {request.request(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {Log.e("error", "请求失败");}@Overridepublic void onResponse(Call call, Response response) throws IOException {Log.e("success", "请求成功:" + response.body().string());}});}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}
}

源码打包下载地址:

https://github.com/fengfanchen/AndroidReverse/tree/master/OkHttp3Demo

Android笔记-使用okhttp3库发送http请求相关推荐

  1. 接口测试 — 使用Requests库发送POST请求

    POST请求用于向服务器提交数据,比如提交一个表单新建一个用户.或修改一个用户信息等操作. 对于POST请求,我们可以通过浏览器开发者工具或者其他外部工具来进行抓包,得到请求的URL.请求头(requ ...

  2. C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁、动车、火车车次信息的方法

    C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁.动车.火车车次信息的方法 1 HTTPS请求 1.1 研究浏览器发送的请求数据 1.2 代码实现 2 分析 ...

  3. Python接口自动化-python使用requests库发送Get请求

    python -Requests的用法官方文档: https://requests.readthedocs.io/zh_CN/latest/ Requests发送Get请求 import reques ...

  4. java 使用http2.0_【Java】okhttp3如何发送http2请求?

    问题背景: 最近想用springboot2.0搭建支持http2.0的服务器.搭好了之后,通过Chrome访问,显示http协议版本为h2(服务器升级成功,证书配置成功). 现在想自己写个客户端进行测 ...

  5. python调用接口requests_【python接口自动化】- 使用requests库发送http请求

    前言:什么是Requests ?Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库.它⽐ urllib 更加⽅便,可以节约我们⼤ ...

  6. Android笔记:LitePal库的更新,DataSupport被弃用问题

    前言 在学Android中LitePal相关知识的时候,发现书本<第一行代码>中很多内容都过时了,在网上找了解决方法,尚且记录一波. 问题解决 先附上LitePal项目的使用文档:http ...

  7. Android笔记之权限库AndPermission

    GitHub地址:https://github.com/yanzhenjie/AndPermission 这个库可以节省不少代码量和时间 使用示例如下 findViewById(R.id.btnGet ...

  8. 前端学axios还是ajax,【Web前端问题】axios发送ajax请求问题?

    在程序里借助axios库发送ajax请求,但是失败了,返回这个 然而在同一个位置换成jquery的代码却能成功,代码如下,不知axios哪里写的不对??谢谢~ //axios axios.post(& ...

  9. 【安卓开发】Android初级开发(okhttp3发送带header与带参数的GET请求)

    1.首先需要先加入相应依赖 dependencies{implementation 'com.squareup.okhttp3:okhttp:3.13.1' implementation 'com.s ...

最新文章

  1. 深度学习核心技术精讲100篇(四十二)-Seq2seq框架下的文本生成
  2. 提示以下的错误信息:“未能在设计视图中打开, 块中,以不同方式将值括起来 ”...
  3. jenkins启动/重启/停止命令 改端口
  4. VSS Teamwork 环境架设[文章汇编集]
  5. Androidstudio抽取成员变量快捷键 快捷键大全 自定义setting文件
  6. java 中PriorityQueue优先级队列使用方法
  7. web安全 mysql 提权
  8. js laypage mysql_laypage 物理分页与逻辑分页实例
  9. 电脑安装Chrome OS
  10. 阿里云主机如何安装wordpress?阿里云服务器搭建个人博客步骤
  11. mysql 子查询怎么写_MySQL中两种子查询的写法
  12. electron打包时报错could not find: “C:\Users\xxxx\AppData\Local\Temp\t-OLh5E0\0-messages.nsh“
  13. 同花顺数据获取思路及算法
  14. Revit SDK EXTENSIONS(软件开发工具包扩展)是什么
  15. squid笔记下载_Squid笔记
  16. win32根据进程名获取进程ID或者终止进程
  17. 安装MongoDB出现的问题
  18. C++ : Boost : Rational 有理数类
  19. foc 电流环解耦_永磁同步电机矢量控制的解耦及电流环的设计
  20. 设计模式 - 享元 代理

热门文章

  1. 微软BI 之SSRS 系列 - 使用 LookupSet 和 Adjacent Group 等高级技巧在报表中跨 Dataset 分组查询...
  2. [文件系统]Image映象文件
  3. 3 分钟了解 JSON Schema
  4. 职场中神奇的程序员,却常常被人说“太直”,这是什么样的思维?
  5. 程序员谈 JavaScript 数组 Array 的学习
  6. 识别它的飞鸽传书2012方法是光圈环
  7. 程序员谈谈我的职场观(三)
  8. 深圳软件开发向前跳转会略过一些节点
  9. android 个推打开页面,个推android客户端点击跳到指定activity
  10. 推荐一款生信分析工具的集大成者