Android用OKHttp进行数据请求时,统一给所有接口添加某个请求参数

(二)OkHttp网络请求配置参数详解 前面说到OkHttp网络请求的总体框架。这一章节主要通过解读OkHttpClient的内容,了解可以通过框架配置哪些参数,以及这些参数的意义。让我们对OkHttp框架和HTTP协议之间的关系有更深的了解。 阅读详情

        作为Android端最主流的联网框架,OkHttp已经被很多人在很多项目中使用,可能大多数人都是会把OkHttp依赖加进去,然后初始化后再用retrofit来访问接口,但是在开发过程中,如果做对应语言消息返回的时候  比如手机是中文,服务端返回数据的提示就是中文,如果手机是英文,那么服务端返回数据的提示是英文,所以在这个地方,就需要在请求接口的时候,给服务端传递一个语言参数,然后服务端就会根据这个传过去的语言参数来返回不同语言的提示,好,我们现在要解决的就是传递语言参数的问题。

        我之前在不知道OkHttp可以统一添加请求参数的时候,我是给每个接口都传递了一个语言参数,其实吧这样的也可以,再其实吧,不传也可以,因为服务端都会设置一个默认的返回提示,或者默认英文,或者默认中文的,但是后来接手了一个项目,这个项目也需要传递语言参数,但是我一看我的前辈写的接口,大概一百多接口,都没加这个参数,但是新需求上又需要传递这个,我不可能一个一个接口的加吧,那么多,然后在百度上面找,就看到了OkHttp的这个,可以在初始化的时候给所有接口添加一个请求参数,下面是初始化OkHttp的代码,都通用的,就这个几句,但是要给接口添加参数是写注释这一句:

com.squareup.okhttp.OkHttpClient okHttpClient = new com.squareup.okhttp.OkHttpClient().setHostnameVerifier(new HostnameVerifier() {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        return false;
    }
}).setCache(new Cache(Util.getCacheDir(), 1 * 1024 * 1024))
        .setSslSocketFactory((SSLCertificateSocketFactory) SSLCertificateSocketFactory.getDefault(1000));
okHttpClient.interceptors().
add(new LoggingInterceptor());//这一句是给接口添加参数的,但是主要的还是new LoggingInterceptor()
RestAdapter mRestAdapter = new RestAdapter.Builder().setEndpoint(url).
        setConverter(new GsonConverter(gson)).setLogLevel(RestAdapter.LogLevel.FULL)
        .setLog(new RestAdapter.Log() {
            @Override
            public void log(String s) {
                
            }
        }).setClient(new OkClient(okHttpClient)).build();

上面写注释那一句就是添加一个方法,这个方法是我们自己写的:

public class LoggingInterceptor implements Interceptor {
    private final Charset UTF8 = Charset.forName("UTF-8");

    @Override
    public Response intercept(Chain chain) throws IOException {
        Request oldRequest = chain.request();//定义一个Request 请求
        // 添加新的参数
        HttpUrl.Builder authorizedUrlBuilder = oldRequest.httpUrl().newBuilder().scheme(oldRequest.httpUrl().scheme())
                .host(oldRequest.httpUrl().host())
                .addQueryParameter("字段名字", "语言");//在这个请求里面添加一个请求参数

        // 新的请求
        Request newRequest = oldRequest.newBuilder()
                .method(oldRequest.method(), oldRequest.body())
                .url(authorizedUrlBuilder.build())
                .build();//再定义一个新的Request请求,再把添加了请求参数的请求放到新的请求里面来请求数据


        RequestBody requestBody = newRequest.body();

        String body = null;

        if (requestBody != null) {
            Buffer buffer = new Buffer();
            requestBody.writeTo(buffer);

            Charset charset = UTF8;
            MediaType contentType = requestBody.contentType();
            if (contentType != null) {
                charset = contentType.charset(UTF8);
            }
            body = buffer.readString(charset);
        }

        long startNs = System.nanoTime();
        Response response = chain.proceed(newRequest);
        long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs);

        ResponseBody responseBody = response.body();
        String rBody = null;


        return response;
    }


}

首先在这个方法里面,我们需要定义一个Request 请求,但是这个请求不是执行请求数据,而是在这个请求里面添加一个请求参数,然后再定义一个新的Request请求,再把添加了请求参数的请求放到新的请求里面来请求数据,这样所以通过这个方法请求的接口都会带一个你添加的参数。

注:这个方法是我自己百度到的,属于个人理解,说的不对的地方,欢迎大神指点。

安卓开发Android studio学习笔记15:关于如何使用Okhttp框架的网络请求(调用API接口) OkHttp分为get和post请求,在这两种请求中又分为同步和异步的请求。同步的意思就是得等到服务器有相应才会继续往下走,所以同步的方式都需要开启一个线程。 阅读详情

相关推荐

Android 中Okhttp的同步请求与异步请求详解

同步请求与异步请求的概念: 简单地说,同步就是发出一个请求后什么事都不做,一直等待请求返回后才会继续做事;异步就是发出请求后继续去做其他事,这个请求处理完成后会通知你,这时候就可以处理这个回应了。 写了个Demo去理解Okhttp中的get同步请求与异步请求,和post同步请求与异步请求 1.get的同步请求,其中的讲解,已经在代码中注释了出来。 //get同步请求 public void getSync(View view) { //在Android 中完成网络请求必须在子线程中

路宇的博客 1万+

Android请求时候添加共同的参数

Android在联网请求时候需要添加共同的参数比如Token,如果每次都在请求时候添加的请求参数中会很麻烦,可以添加到请求头中,每次联网操作就不需要添加了,我联网操作使用的是Retrofit,忘记是看到的哪位大神的博客了,Retrofit的封装是借鉴的别人的。RetrofitManager.javapublic class RetrofitManager { private static ...

wangshan_1121的博客 709

在Ansys Simplorer中设计三相逆变器,并与Maxwell FEA耦合,实现160kW PMSM

在这篇博文中,我们将探讨如何使用设计三相逆变器,并将其与Ansys Maxwell中的电磁有限元分析模型耦合,以获得准确的系统级结果。Ansys Electronics为多域仿真提供了强大的生态系统,可实现跨各种物理领域的无缝集成。Maxwell用于电磁有限元分析 (FEA),Simplorer(Twin Builder) 用于系统级逆变器和控制器设计,Icepak用于电子热仿真。例如,我们将使用 Simplorer 介绍160 kW、8 极永磁同步电机 (PMSM)的逆变器设计过程。让我们开始吧!

jkh920184196的博客 1423

android okhttp加公共参数_android okhttp加公共参数_在Android中的okhttp中向GET请求添加查询参数...

尝试HttpUrl类(在okhttp包中).//adds the pre-encoded query parameter to this URL's query stringaddEncodedQueryParameter(String encodedName, String encodedValue)//encodes the query parameter using UTF-8 and ad...

weixin_42299125的博客 666

MacBook 上 LaTeX 环境搭建:从 Mactex 到 Sublime Text 与 Skim 的保姆级配置流程

本文详细介绍了在MacBook上搭建LaTeX环境的完整流程,从Mactex安装到Sublime Text与Skim的配置优化。涵盖基础环境准备、编辑器设置、PDF预览同步等关键步骤,帮助用户快速建立高效的LaTeX工作流,特别适合学术写作和技术文档创作。

weixin_30824599的博客 678

Part03 数据结构

本文介绍了CSP-S初赛中常见的高级数据结构及其实现,包括: 线性结构:双端栈、双端队列、单调队列、优先队列和ST表,重点分析了它们的特点、时间复杂度及典型应用场景。 集合与森林:并查集(带路径压缩和按秩合并)和树的孩子兄弟表示法,展示了多叉树转化为二叉树存储的方法。 特殊树结构:包括二叉堆、树状数组、线段树和字典树,详细说明了它们的构建、查询和更新操作,特别强调了线段树的递归实现和字典树的前缀匹配特性。 每种数据结构都配有核心C++代码实现,涉及数组模拟、动态规划和树形结构等编程技巧,适合算法竞赛选手快速

weixin_43863957的博客 1179

android 1加 参数,android – 动态地向API请求添加可选参数

你有几种方法来实现:>默认情况下,Retrofit对所有空查询参数正确处理null,因此您可以执行以下操作:@GET("/user/{id}/likes")void getLikes(@Path("id") int id, @Query("n") Integer number, @Query("pos") Integer pos Callback cb);如果使用Object而不是int,则...

weixin_32390647的博客 303

12. Web安全—渗透测试用例—敏感信息泄漏

12. Web安全—渗透测试用例—敏感信息泄漏

weixin_43567873的博客 412

OkHttp拦截器获取GET/POST请求参数并添加公共参数

我们在创建OkHttp客户端时,可以添加各种拦截器,真的很香: OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .addInterceptor(new XXXInterceptor()) .addIntercept...

倚竹幽篁 1万+

[STC32G144K246入门第一步]点亮LED

STC32G144K246是一款高性能32位8051单片机,集成了丰富外设资源,适用于工业控制和复杂算法处理。该芯片支持双模式内核,内置硬件加速器,提供246KB Flash和144KB SRAM存储空间。文章详细介绍了开发环境搭建步骤、寄存器配置方法,并给出了LED驱动示例代码,通过推挽输出控制P42口实现闪烁效果。虽然开发环境相比ARM存在不足,但通过合理配置仍可满足项目需求。该教程为开发者快速上手STC32G144K246提供了实用参考。

sinat_58149788的博客 795

FFMPEG音频开发: Linux下采集摄像头(使用V4L2框架)数据录制成MP4视频保存到本地

一、环境介绍 操作系统介绍:ubuntu 18.04 FFMPEG版本: 4.4.2 摄像头: USB摄像头、虚拟机挂载本机自带摄像头 二、FFMPEG与X264下载编译 X264下载地址: http://www.videolan.org/developers/x264.html FFMPEG下载地址:https://ffmpeg.org/download.html Yasm ...

8868

android okhttp加公共参数_Okhttp3添加公共请求头和添加公共请求参数

在利用okhttp进行网络请求时,通常会用到拦截器Interceptor这个东西。但是为请求链接添加拦截器又分为三种添加,第一种:添加请求头,第二种:GET请求添加公共参数,第三种:POST请求添加公共参数。一下就是添加的方法首先创建一个类实现Interceptor:public class HttpInterceptorimplements Interceptor{}然后就是各个添加的方法:最后...

weixin_35417196的博客 2130

【读代码】从claude skills到superpowers项目

最近claude skills成了大热门,今天一起看下GitHub 上的开源技能框架,他将“工作流”封装为“技能” (Skills)。本文尝试剖析该项目的技能粒度定义、多技能关联架构、应用逻辑等。与传统的 Function Calling 不同,Superpowers 中的 Skill 定义粒度并非“原子操作”,而是**“认知模式” (Cognitive Mode) 或“工作阶段”**。

kakaZhui的博客 1917

Android Retrofit OkHttp添加Interceptor拦截器设置POST请求公共参数

private HttpServiceImpl() { OkHttpClient httpClient = new OkHttpClient.Builder() .connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS) // 对请求进行拦截处理,添加统一的请求头及打印请求报文和返回报文 ...

野猿新一 4127

搭建问答系统

数据描述 import docx import jieba from gensim.models import Word2Vec import os import numpy as np import pickle as pk import warnings from copy import deepcopy warnings.filterwarnings("ignore") from mu...

微信号:RunsenLiu 1838

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Retrofit统一添加post请求的默认参数

这次面试问的还是还是有难度的,要求当场写代码并且运行,也是很考察面试者写代码因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

wang688699的博客 965

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android 网络请求(二)OKHttp网络通信

同步请求:使用,可以直接获取响应内容,但它会阻塞当前线程,不适合在 UI 线程中执行。异步请求:使用,通过回调来处理响应数据,适合在 UI 线程中执行,避免阻塞 UI。POST 请求:可以通过创建请求体,并通过来发送。请求头:可以通过设置自定义请求头。OkHttp是一个功能强大且易于使用的 HTTP 客户端,适用于大多数 Android 项目的网络请求。对于复杂的请求场景,推荐使用OkHttp。

2402_85226471的博客 2730

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android okhttp打印请求头_Android控制台打印Json数据以及添加统一的请求头Header

一、Android json数据Log格式化打印Android项目中的网络请求返回的数据一般都是json格式,而且可能很长,在log中就是长长的一大串堆在那里,还需要复制出来进行格式化处理,很麻烦。解决方案代码如下:public static final String LINE_SEPARATOR = System.getProperty("line.separator");public stat...

weixin_39928003的博客 1277

android用okhttp发送带header带参数的post上传文件请求

public static Map<String, Object> sendPost_file(String url, Map<String, String> map_header, Map<String, String> map_body, String parameterName, String path_file, String fileType) throws IOException { //添加文件 File file ...

qq_40308101的博客 3954

Android Retrofit通过OkHttp添加Interceptor拦截器设置Get请求公共参数

pubic Retrofit getRetrofit() { OkHttpClient httpClient = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public Response inter...

野猿新一 2402

Android中使用OkHttp的五种请求方式及注意事项

OkHttp的使用一、环境说明1、在gradle中引入依赖2、AndroidManifest中开启网络权限3、搭建测试接口4、编写OkHttp工具类二、发送请求1.发送无参的Get请求2.发送有参的Get请求3、发送无参Post请求4.发送有参Pos请求5.发送Post 的Json数据 一、环境说明 1、在gradle中引入依赖 implementation 'com.squareup.okhttp3:okhttp:3.12.1' debugImplementation 'com.squa

Android_Cob的博客 7682

Retrofit统一添加post请求的默认参数(1)

最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2020-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。还有高级架构技术进阶脑图、高级进阶架构资料帮助大家学习提升进阶,这里我也免费分享给大家也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。一起互勉~《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

2401_84132723的博客 1351

android okhttp加公共参数_Android okHttp网络请求之Get/Post请求

前言:之前项目中一直使用的Xutils开源框架,从xutils 2.1.5版本使用到最近的xutils 3.0,使用起来也是蛮方便的,只不过最近想着完善一下app中使用的开源框架,由于Xutils里面包含的东西相对来说比较杂,有数据库、图片缓存、注解、网络请求等等,秉着一个开源库只处理一件事的想法,决定逐步替换到Xutils,上网搜了一下比较好的开源框架,就找到了okHttp、volley、and...

weixin_39552304的博客 476

okhttp的post无参数请求

okhttp的post请求post无参数请求okhttp post无参数请求okhttp public void returnedmoneyBanklist() { if (okHttpClient == null) { okHttpClient = new OkHttpClient.Builder().cookieJar(new CookiesManager()).build(); } ArrayMap<String, Object> arrayMap

qq_30082113的博客 2084

【Android】OkHttp发起GET请求 && POST请求

OkHttp是一个高效的HTTP客户端库,本文介绍了GET和POST请求的实现步骤:关键点:①使用Builder模式创建对象②异步请求通过回调处理结果③响应内容需通过string()方法获取④涉及UI操作需切换到主线程

阿华的博客 1509

okhttp添加拦截器Interceptor

现在Android一般的的网络请求一般都是使用okhttp,我们在调试接口的时候会在控制台查看接口的请求和返回数据,okhttp已经考虑到这种情况了,我们只需要添加拦截器就好了。然后本来想在网上找个的,结果发现坑好多,很多都不全而且还容易报错,就自己写了一个,分享给大家。 过程就不多说了,直接贴代码 //Log拦截器代码 public class LogInterceptor implemen...

MIRROR的博客 2688
上一篇: 踩过的坑—DES加密解密
下一篇: Android源码中修改USB默认模式(充电、MTP等)、关闭通知栏的USB通知
江雪丶
博客等级 码龄9年 7粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值