如何在服务生成器类中添加http拦截器

2024-01-13

我创建了一个单独的服务生成器类,如本指南所示https://futurestud.io/tutorials/retrofit-2-manage-request-headers-in-okhttp-interceptor https://futurestud.io/tutorials/retrofit-2-manage-request-headers-in-okhttp-interceptor

ApiServiceGenerator.java

public class ApiServiceGenerator {
    private static final String BASE_URL = "http://192.168.0.205/hadia/api/";

    private static Retrofit.Builder builder =
            new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create());

    private static Retrofit retrofit = builder.build();

    private static OkHttpClient.Builder httpClient =
            new OkHttpClient.Builder();


    public static <S> S createService(
            Class<S> serviceClass) {

        return retrofit.create(serviceClass);
    }
}

我需要为每个请求添加一个授权标头, 我如何使用这个静态 createService 方法来做到这一点?

以下是如何创建一个拦截器来为每个请求添加标头

httpClient.addInterceptor(new Interceptor() {  
    @Override
    public Response intercept(Interceptor.Chain chain) throws IOException {
        Request original = chain.request();

        // Request customization: add request headers
        Request.Builder requestBuilder = original.newBuilder()
                .header("Authorization", "auth-value"); // <-- this is the important line

        Request request = requestBuilder.build();
        return chain.proceed(request);
    }
});

如何添加此方法以向每个请求添加承载令牌?


我有一个Creator像这样的类

class Creator {
    public static Services newServices() {
        final HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        final OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .build();

        final Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Services.HOST)
                .client(client)
                .addConverterFactory(GsonConverterFactory.create(GsonUtils.get()))
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        return retrofit.create(Services.class);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在服务生成器类中添加http拦截器 的相关文章

  • 如何在android中使用kso​​ap2库解析复杂的响应

    大家好 我正在使用 Ksoap2 库解析以下类型的响应 但没有成功获得结果 我的请求如下
  • 如何在 Android 中的 onCreate() 内部创建方法

    如何在里面创建一个方法onCreate 方法 当我创建它的显示错误时 令牌 void 预期存在语法错误 并且如果无法在内部创建方法onCreate 方法比请告诉我如何在外部创建方法onCreate 并通过mContext and mActi
  • 围绕二维坐标系中的特定点缩放

    Below is an image my coordinate system 我想做的是 我想开始围绕画布中的特定点进行缩放 缩放工作正常 但我的问题是我不知道如何计算缩放时移动画布的量 请注意 我我没有使用canvas scale 我只是
  • 如何从 WifiP2pDeviceList 获取 wifi direct 设备名称

    我想在执行请求对等点时获取 wi fi direct 名称 这是我的代码 if WifiP2pManager WIFI P2P PEERS CHANGED ACTION equals action Log d tag success dis
  • 如何从 Cursor 获取行 ID

    如何从游标获取行 ID 我不认为 Cursor 直接暴露了这一点 SQLiteDatabase insert 返回新插入行的行 ID 或者在 Android 中 惯例是有一个名为 id 包含表的主自动增量键 所以cursor getLong
  • 任务执行失败 程序类型已存在

    我将这个新库包含到我的依赖项中 compile com github Triggertrap SeekArc v1 1 然后当我构建时出现构建错误 Error Exception in thread queued resource proc
  • 在 doInBackground AsyncTask Android 中传递更多值

    如何传递更多的值doInBackground My AsyncTask看起来像这样 private class DownloadFile extends AsyncTask
  • 屏幕滚动时 GridView 内的项目会重复

    我使用 GridView 来显示一组用户可以选择的类别 网格的每个项目都由一个 ImageView 和一个 TextView 组成 两者都是从服务器检索的 当触摸一个项目时 另一个活动就会启动 我以为一切都很顺利 直到我注意到当我滚动屏幕时
  • 无法通过 Android 应用程序访问我的笔记本电脑的本地主机

    因此 我在发布此内容之前做了一项研究 我发现的解决方案不起作用 更准确地说 连接到我的笔记本电脑的 IPv4192 168 XXX XXX 没用 连接到10 0 2 2 加上端口 不起作用 我需要测试使用 Django Rest 框架构建的
  • eclipse - 在android虚拟设备中卡住中文

    当我在 Eclipse 中运行 Android 模拟器时 当我尝试编写文本时 所有键盘字符都会被翻译为中文 为什么是这样 Thanks 点击并按住EditText Select 输入法 Select 安卓键盘
  • 检查应用程序是否首次运行[重复]

    这个问题在这里已经有答案了 我是 Android 开发新手 我想根据应用程序安装后首次运行来设置一些应用程序的属性 有什么方法可以发现应用程序是第一次运行 然后设置其首次运行属性吗 下面是一个使用的例子SharedPreferences实现
  • 从代码动态更改多个文本视图的大小(没有“磁盘上”xml 主题)?

    我有 10 个文本视图在我的代码中 我想更改所有代码的字体大小 在我的布局中我使用了 style定义通用属性 但是我不知道一旦布局出现在屏幕上如何从代码中更改它们 我不想做的是更新 AND 对象 但只写在一处 我知道我可以使用应用主题但这假
  • Facebook Android 意图

    我对这个意图有疑问 这个意图是发送文本类型的消息 一切正常 电子邮件 短信 推特以及手机上的任何内容 但唯一有问题的是facebook 它会尝试以链接而不是文本的形式发布 Intent s new Intent android conten
  • 在哪里可以获得用于导入 libcore.io 的 JAR?

    我想处理一个GaiException在我的应用程序中 调试器告诉我 它位于 libcore io 包中 但导入它会产生错误 我想我需要向我的项目添加一个额外的 JAR 才能正确解析此类型 我在我的 android sdk 文件夹中进行了一些
  • 点击当前选项卡刷新页面时的 Xamarin.Forms TabbedPage 事件

    我正在使用 Xamarin Forms 构建 iOS Android 应用程序 并有一个 TabbedPage 如果用户已经在选项卡 2 上 并且单击了选项卡 2 并且我希望刷新选项卡 2 或者运行我自己的函数 以便我可以自己刷新它 有没有
  • 如何在kotlin中使用Coroutine每秒调用一个函数

    我刚刚创建了一个应用程序 其中我的函数 getdata 每秒调用一次以从服务器获取新数据 而 updateui 函数将更新 UI 中的视图 我在我的应用程序中不使用任何异步任务或协程 我想这样做 请告诉我我怎样才能做到这一点 这是我的代码
  • Phonegap facebook 插件:android 的各种问题

    我正在尝试将 Phonegap 3 1 与 Phonegap facebook plugin 集成 以使我的应用程序能够使用 facebook 登录 https github com phonegap phonegap facebook p
  • Google Place Api:来自此 Android 客户端应用程序 com.package.name 的请求被阻止

    我在用PlaceAutocompleteFragment当我单击搜索字段 PlaceAutocompleteFragment 对话框消失时 我收到此错误 errors domain global re ason forbidden mess
  • 查找配对的 Android 蓝牙设备是否在范围内的正确方法?

    我想编写一个充当蓝牙客户端的应用程序 我想做的是找出最好的方法来确定我支持的特定设备是否在范围内 而不是一直尝试在其上执行 BluetoothDevice connect 并失败如果不在范围内 这里我们假设设备已经配对 恐怕在特定设备处于范
  • Google Cloud Messaging - 立即收到或长时间延迟收到的消息

    我在大学最后一年的项目中使用谷歌云消息传递 一切正常 但我在使用 GCM 时遇到了一些麻烦 通常 消息要么几乎立即传递 要么有很大的延迟 我读过这篇文章 但我真的认为它不适用于这种情况 GCM 通常会在消息发送后立即传送消息 然而 这并不总

随机推荐

  • 动态创建文件输入元素

    我想自定义文件输入按钮 所以我使用此代码创建一个文件输入元素 function inputBtn var input document createElement input input type file setTimeout funct
  • TensorFlow:如何根据历元设置学习率衰减?

    学习率衰减函数tf train exponential decay需要一个decay steps范围 每隔一段时间降低学习率num epochs 你会设置decay steps num epochs num train examples b
  • Apache、SSL 客户端证书、LDAP 授权

    我在 serverfault com 上发布了这个问题 但没有答案 所以我在这里尝试 是否可以混合 mod ssl 和 mod auth ldap 以便使用客户端证书进行身份验证并使用 mod auth ldap 进行授权 需要 ldap
  • javax.servlet.ServletException:包装器找不到 servlet 类

    我已经从 Jasper Reports for Java Developer 第 3 章 中制作了一个 servlet 它将在浏览器上显示 Jasper Report 该 Servlet 如下所示 public class FirstRep
  • 如何抑制 Visual Studio 2017 (C#) 中的初始构建后事件错误?

    我在 Visual Studio 2017 中有一个 C 解决方案 我还有一个名为的批处理脚本foobar bat其中包含以下代码 echo foobar error 1 This is a test error 我的目标是得到only当我
  • new之后直接调用方法?

    PHP 是否允许像这样调用新对象的方法 new CEntry new Control gt actuate 我可以传递一个新对象作为参数 如下所示new Control 然而 它似乎不喜欢 actuate 调用 我收到错误 Parse er
  • 如何使用 C++ 中具有多个参数的 if 语句调用多个函数

    该程序针对每种条件运行所有函数 而它应该只针对每种条件运行一个函数 为什么 我应该编写计算球体 圆柱体和圆锥体的体积和表面积的函数 我无法弄清楚是 if 语句弄乱了 还是函数本身弄乱了 该程序的理想输出如下 选择形状 1 球体 2 圆柱体
  • 从 node-mysql 连接到 Amazon RDS (MySQL) 时出错

    我正在尝试使用 felixge node mysql 包从 Lambda 中托管的 Nodejs 代码连接到我的 Amazon RDS MySQL 实例 我需要帮助来找出我做错了什么 我收到 连接 ETIMEDOUT 错误 我的代码托管在
  • 不同源文件中的 D 模板特化

    我最近问this https stackoverflow com questions 6328444 type classes in d有关如何在 D 中模拟类型类的问题 并建议了一种使用模板专业化来实现此目的的方法 我发现 D 无法识别不
  • 基于不同XAML的样式继承

    如何将样式中的 BasedOn 标记指定为在其他文件中定义的样式 Example Dictionary1 xaml 定义 在 Dictionary2 xaml 中我需要类似的东西
  • 从 pandas 数据框中删除闰年日

    我有福尔 数据框 datetime 2012 01 01 125 5010 2012 01 02 125 5010 2012 01 03 125 5010 2012 02 04 125 5010 2012 02 05 125 5010 20
  • 我是否需要担心“Rc”的开销?

    我是否正确地假设唯一 放慢速度 的事情Rc问题是它会在对象删除时检查是否释放该对象 除此之外 取消引用的开销是 多少 Rc 即我应该关心它吗 这两个函数几乎同样快吗 或者说速度上有明显的区别吗 fn test with box let b
  • 日志记录和同步

    我刚刚编写了自己的日志框架 非常轻量级 不需要大型日志框架 它由一个接口 ILogger 和许多实现该接口的类组成 我有一个问题是 TGUILogger 它采用 TStrings 作为日志记录目标 并将日志记录与主线程同步 以便列表框的 I
  • Linux 中如何给线程命名? [复制]

    这个问题在这里已经有答案了 我有一个用 C C 编写的多线程 Linux 应用程序 我有为我的线程选择名称 https stackoverflow com questions 149932 naming conventions for th
  • Java正则表达式跳过匹配

    我有一些文字 我想提取不以标点符号分隔的单词对 这是代码 n grams Pattern p Pattern compile a z if n 2 p Pattern compile a z a z if n 3 p Pattern com
  • 如何在supervisor中添加延迟到受监督进程 - linux

    我添加了一个使用 python cassandra 库的 Bottle 服务器 但它存在以下错误 Bottle FATAL Exited too quickly process log may have details 日志显示 File
  • Android JNI 本机 C 函数调用杀死活动

    什么有效 我有一个运行 TUN TAP 服务的 c 可执行文件 以及两个在终端中运行良好的 shell 脚本 用于配置 ip 路由 和 iptables 全部以 root 身份运行 什么不起作用 我正在尝试创建一个 Android 应用程序
  • 如何在 Python 中提取字符串中的列表?

    我使用 Pandas 导入了 CSV 并用字符串条目读入了一列 检查本系列 专栏 的条目 我发现它们实际上应该是列表 例如 df A pd Series entry11 entry21 entry22 entry31 entry32 我想从
  • Windows批处理文件中的一个数字既大于又小于另一个

    我的批处理文件中有以下代码 if bakfilesize geq freespacet echo baksize is larger if bakfilesize leq freespacet echo baksize is smaller
  • 如何在服务生成器类中添加http拦截器

    我创建了一个单独的服务生成器类 如本指南所示https futurestud io tutorials retrofit 2 manage request headers in okhttp interceptor https future