使用前需要在Gradle Script中的build gradle中引入:

compile 'com.squareup.okio:okio:1.13.0'

compile 'com.squareup.okhttp3:okhttp:3.9.0'

GET

//创建OkHttpClient对象

OkHttpClient okHttpClient = new OkHttpClient.Builder()

.connectTimeout(10, TimeUnit.SECONDS)

.writeTimeout(10,TimeUnit.SECONDS)

.readTimeout(20, TimeUnit.SECONDS)

.build();

final Request request = new Request.Builder()

.url("http://172.20.192.168:8080/getbookByFrom?name=android基础&price=50")//请求的url

.get()//设置请求方式,get()/post() 查看Builder()方法知,在构建时默认设置请求方式为GET

.build(); //构建一个请求Request对象

//创建/Call

Call call = okHttpClient.newCall(request);

//加入队列 异步操作

call.enqueue(new Callback() {

//请求错误回调方法

@Override

public void onFailure(Call call, IOException e) {

System.out.println("连接失败");

}

//异步请求(非主线程)

@Override

public void onResponse(Call call, Response response) throws IOException {

if(response.code()==200) {

System.out.println(response.body().string());

}

});

POST(json方式)

OkHttpClient okHttpClient = new OkHttpClient.Builder()

.connectTimeout(10, TimeUnit.SECONDS)

.writeTimeout(10,TimeUnit.SECONDS)

.readTimeout(20, TimeUnit.SECONDS)

.build();

Book book = new Book();

book.setName("android基础");

book.setPrice(59);

//使用Gson 添加 依赖 compile 'com.google.code.gson:gson:2.8.1'

Gson gson = new Gson();

//使用Gson将对象转换为json字符串

String json = gson.toJson(book);

//MediaType 设置Content-Type 标头中包含的媒体类型值

RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8")

, json);

Request request = new Request.Builder()

.url("http://172.20.192.168:8080/getbookByJson")//请求的url

.post(requestBody)

.build();

//创建/Call

Call call = okHttpClient.newCall(request);

//加入队列 异步操作

call.enqueue(new Callback() {

//请求错误回调方法

@Override

public void onFailure(Call call, IOException e) {

System.out.println("连接失败");

}

@Override

public void onResponse(Call call, Response response) throws IOException {

System.out.println(response.body().string());

}

});

关于将对象转换为json字符串,除了使用Gson还可以用JSONObject:

public static final MediaType JSON=MediaType.parse("application/json; charset=utf-8");

JSONObject jsonObject = new JSONObject();

try {

//example: {'likes':['体育','政治'...]}

jsonObject.put("likes",selectedThemes);

} catch (JSONException e) {

e.printStackTrace();

}

//创建一个RequestBody(参数1:数据类型 参数2传递的json串)

RequestBody requestBody = RequestBody.create(JSON, jsonObject.toString());

开发过程中遇到传json需要带上authentication的问题,然后在Stack Overflow上找到了解决方法——使用Interceptor。

import java.io.IOException;

import okhttp3.Credentials;

import okhttp3.Interceptor;

import okhttp3.Request;

import okhttp3.Response;

public class BasicAuthInterceptor implements Interceptor {

private String credentials;

public BasicAuthInterceptor(String user, String password) {

this.credentials = Credentials.basic(user, password);

}

@Override

public Response intercept(Chain chain) throws IOException {

Request request = chain.request();

Request authenticatedRequest = request.newBuilder()

.header("Authorization", credentials).build();

return chain.proceed(authenticatedRequest);

}

}

这样就把username和password放进了authentication里。然后把这个Interceptor加到OkHttpClient就可以了。

OkHttpClient client = new OkHttpClient.Builder()

.addInterceptor(new BasicAuthInterceptor(username, password))

.build();

android get请求最长字符,Android OKHTTP3的GET和POST方法(带basic auth)相关推荐

  1. android get请求最长字符串,android – Retrofit @GET – 如何显示请求字符串?

    我正在使用一个使用Retrofit创建一个休息的客户端的 Android应用程序.为了调试网络调用,我想显示或转储实际被调用的url.有没有办法做到这一点?我已经在下面列出了一些代码,显示了应用程序当 ...

  2. android 加载大长图,android加载长图片的方法

    1.很多应用都有加载一张长图片,用户可以上下拉动图片. 自己没有好的想法,那只好百度咯.结果都说用webview来实现,好吧那就只好先试一下了. 2.自己写了简单的html,然后webview加载.图 ...

  3. Android网络请求归纳 HttpUrlConnection| Vollety|OKHttp3|Retrofit2

    1.网络基础知识: Android网络API库有哪些?      HttpUrlConnection: jdk内置      HttpClient:android提供,6.0被删除      Voll ...

  4. android post请求添加公共参数_XHttp2 一个功能强悍的网络请求库

    XHttp2 一个功能强悍的网络请求库,使用RxJava2 + Retrofit2 + OKHttp组合进行封装.还不赶紧点击使用说明文档,体验一下吧! 项目地址 关于我 https://github ...

  5. Android -- 网络请求

    一. HttpURLConnection 二. HttpClient 三.Volley 四.OkHttp 五. Retrofit ----------------------------------- ...

  6. Android 网络请求HttpURLConnection 和 HttpClient详解

    Android一般通过http协议向服务端接口发送请求,常用有POST和GET传输方式.这种请求通常借助于HttpClient,HttpClient 是 Apache Jakarta Common 下 ...

  7. android retrofit2.0 rxjava2,Android - 网络请求之 Retrofit2 + RxJava

    老婆保佑,代码无BUG 目录 引用 与其他开源请求库对比 Retrofit注解 使用 GET请求 POST请求 Retrofit2 + RxJava 基础使用 优化 封装Retrofit2 + RxJ ...

  8. java android长连接_基于Java Socket的自定义协议,实现Android与服务器的长连接(一)...

    一.基础知识准备 在正式给大家介绍自定义协议之前,我们先对网络传输和协议解析的相关知识点做一个基本的介绍,尽管这些知识点我们在学校里学过,但难免会有所遗忘,这里先做一个简单的介绍,以便对后文的内容理解 ...

  9. android网络请求分析工具,android网络数据请求

    网络数据请求在android中应用很广泛,也很重要,所以我记录了上课讲的获取数据: 大家都知道,网络通信,发送请求有两种方式,GET和POST,这里也不例外. 1.HttpURLConnection的 ...

最新文章

  1. Nginx流量拦截算法
  2. 【Linux 内核】实时调度类 ⑦ ( 实时调度类核心函数源码分析 | dequeue_task_rt 函数 | 从执行队列中移除进程 )
  3. 小白视觉第一步保存图片
  4. 【PAT乙级】1051 复数乘法 (15 分)
  5. XP系统自动关机命令
  6. oracle 密码文件作用,测试 oracle 密码文件在何时起作用
  7. 最大似然函数对数求解的便利
  8. C++11新特性学习
  9. 【Verilog语法】PC-relatve branch 以及 Delay Slot 的含义
  10. 农用地包括哪些地类_土地地类一览表
  11. (39)System Verilog程序Program设计实例
  12. PDF控件PDF Creator V5.5.2.3发布 | 支持插入PDF417条形码
  13. EEGLAB如何进行ERPs数据处理你都会了吗?看这里保证你一劳永逸的get ERPs数据处理技能
  14. 南方cass字体样式设置_实用|史上最全CASS字体异常的解决方案来啦!
  15. 怎么在css中定义字体颜色,css中怎么设置字体颜色
  16. 第13期-在线的文章摘要生成器, 自己写了一个支持中文的
  17. react-custom-scrollbars 滚动条组件的简单实现
  18. 乐高收割机器人_乐高机器人这个大坑,为啥大家都拽着孩子往里跳?(想了解乐高机器人比赛看这一篇就够了)...
  19. BP神经网络的数据分类(MATHLAB实现)
  20. m3u8索引文件介绍

热门文章

  1. 单目视觉里程计性能估计
  2. 长篇自动驾驶技术综述论文(上)
  3. 2021年大数据Flink(二十一):​​​​​​​案例三 会话窗口
  4. CentOS7环境搭建使用PhpStorm上传代码
  5. Android Intent setAction的使用注意
  6. Android 监听多个Spinner 的点击事件
  7. 关于微信公众号注意事项
  8. android .9图片使用和一些技巧
  9. Loadrunner安装使用入门
  10. Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)