android get请求最长字符,Android OKHTTP3的GET和POST方法(带basic auth)
使用前需要在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)相关推荐
- android get请求最长字符串,android – Retrofit @GET – 如何显示请求字符串?
我正在使用一个使用Retrofit创建一个休息的客户端的 Android应用程序.为了调试网络调用,我想显示或转储实际被调用的url.有没有办法做到这一点?我已经在下面列出了一些代码,显示了应用程序当 ...
- android 加载大长图,android加载长图片的方法
1.很多应用都有加载一张长图片,用户可以上下拉动图片. 自己没有好的想法,那只好百度咯.结果都说用webview来实现,好吧那就只好先试一下了. 2.自己写了简单的html,然后webview加载.图 ...
- Android网络请求归纳 HttpUrlConnection| Vollety|OKHttp3|Retrofit2
1.网络基础知识: Android网络API库有哪些? HttpUrlConnection: jdk内置 HttpClient:android提供,6.0被删除 Voll ...
- android post请求添加公共参数_XHttp2 一个功能强悍的网络请求库
XHttp2 一个功能强悍的网络请求库,使用RxJava2 + Retrofit2 + OKHttp组合进行封装.还不赶紧点击使用说明文档,体验一下吧! 项目地址 关于我 https://github ...
- Android -- 网络请求
一. HttpURLConnection 二. HttpClient 三.Volley 四.OkHttp 五. Retrofit ----------------------------------- ...
- Android 网络请求HttpURLConnection 和 HttpClient详解
Android一般通过http协议向服务端接口发送请求,常用有POST和GET传输方式.这种请求通常借助于HttpClient,HttpClient 是 Apache Jakarta Common 下 ...
- android retrofit2.0 rxjava2,Android - 网络请求之 Retrofit2 + RxJava
老婆保佑,代码无BUG 目录 引用 与其他开源请求库对比 Retrofit注解 使用 GET请求 POST请求 Retrofit2 + RxJava 基础使用 优化 封装Retrofit2 + RxJ ...
- java android长连接_基于Java Socket的自定义协议,实现Android与服务器的长连接(一)...
一.基础知识准备 在正式给大家介绍自定义协议之前,我们先对网络传输和协议解析的相关知识点做一个基本的介绍,尽管这些知识点我们在学校里学过,但难免会有所遗忘,这里先做一个简单的介绍,以便对后文的内容理解 ...
- android网络请求分析工具,android网络数据请求
网络数据请求在android中应用很广泛,也很重要,所以我记录了上课讲的获取数据: 大家都知道,网络通信,发送请求有两种方式,GET和POST,这里也不例外. 1.HttpURLConnection的 ...
最新文章
- Nginx流量拦截算法
- 【Linux 内核】实时调度类 ⑦ ( 实时调度类核心函数源码分析 | dequeue_task_rt 函数 | 从执行队列中移除进程 )
- 小白视觉第一步保存图片
- 【PAT乙级】1051 复数乘法 (15 分)
- XP系统自动关机命令
- oracle 密码文件作用,测试 oracle 密码文件在何时起作用
- 最大似然函数对数求解的便利
- C++11新特性学习
- 【Verilog语法】PC-relatve branch 以及 Delay Slot 的含义
- 农用地包括哪些地类_土地地类一览表
- (39)System Verilog程序Program设计实例
- PDF控件PDF Creator V5.5.2.3发布 | 支持插入PDF417条形码
- EEGLAB如何进行ERPs数据处理你都会了吗?看这里保证你一劳永逸的get ERPs数据处理技能
- 南方cass字体样式设置_实用|史上最全CASS字体异常的解决方案来啦!
- 怎么在css中定义字体颜色,css中怎么设置字体颜色
- 第13期-在线的文章摘要生成器, 自己写了一个支持中文的
- react-custom-scrollbars 滚动条组件的简单实现
- 乐高收割机器人_乐高机器人这个大坑,为啥大家都拽着孩子往里跳?(想了解乐高机器人比赛看这一篇就够了)...
- BP神经网络的数据分类(MATHLAB实现)
- m3u8索引文件介绍
热门文章
- 单目视觉里程计性能估计
- 长篇自动驾驶技术综述论文(上)
- 2021年大数据Flink(二十一):​​​​​​​案例三 会话窗口
- CentOS7环境搭建使用PhpStorm上传代码
- Android Intent setAction的使用注意
- Android 监听多个Spinner 的点击事件
- 关于微信公众号注意事项
- android .9图片使用和一些技巧
- Loadrunner安装使用入门
- Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)