当前位置: 首页 > 知识库问答 >
问题:

OkHttp Interceptor和CookieJar不适用于最新的华为,如P40

衡子琪
2023-03-14

我的应用程序使用OkHttp 3和OkHttp 2进行联网。它与服务器通信,服务器在成功登录后返回会话。我需要保存此会话,并将其附加到登录后将执行的所有请求的请求头。

我用过Cookie-Jar,它在emulator和我的三星手机上运行得很好,但我的客户在华为P40 Lite上报告了问题。在服务器上进行了一些日志检查后,我发现会话并没有发送到服务器,这导致了验证问题。

之后,我使用华为实时调试在远程华为P40设备上测试我的应用程序,并报告问题仍然存在。在试用了我的应用程序并进行了测试后,我得出结论,我用来处理保存和连接会话的OkHttp 3 Cookie Jar和拦截器在华为上根本不起作用。这可能与谷歌对最新华为设备的服务禁令有关,因为该应用在P30等老设备上运行良好?

任何提示或解决方案都非常欢迎。

我已经通过手动从响应中提取会话并将其附加到带有@Header的调用中克服了这个问题,但这个解决方案非常不干净。

这是我的OkHttpClient代码。请记住,它在非最新的华为手机上运行了2年多,并且在生产中仍然运行良好。

return new OkHttpClient.Builder()
    .sslSocketFactory(sslContext.getSocketFactory(), loadX509TrustManager(tmf))
    .hostnameVerifier(hostnameVerifier)
    .readTimeout(60, TimeUnit.SECONDS)
    .writeTimeout(60, TimeUnit.SECONDS)
    .cookieJar(new JavaNetCookieJar(cookieManager))
    .cache(cache)
    .addNetworkInterceptor(logInterceptor)
    .build();

更新

我对Cookie Jar和Interceptors不起作用是错误的。我曾尝试用这一行捕获块:ProviderInstaller.installIfNeed(上下文);这将失败,因为它需要谷歌服务,并且在catch blok中我会重新运行一个OkHttpClient,它没有连接Cookie Jar。

我检查了华为是否有类似的替代品:ProviderInstaller。需要安装(上下文)


共有1个答案

刘骏祥
2023-03-14

尝试另一个Cookie jar实现?也许是这个持久的?P40上可能有一个坏的CookieManager。

 类似资料:
  • 我已经发布了一个HMS设备的应用程序华为AppGallery。我如何测试和确认它只是为HMS设备发布的。

  • 问题内容: 最小高度不适用于body / html吗? 完全不执行任何操作(firebug报告正文,html标签的高度完全不变) 问题答案: 首先,声明一个doctype以便您符合标准(如果还没有的话)。 现在,正文只能与包含html的正文一样高,因此您需要将HTML标签设置为100%的高度,并将正文设置为min-height 100%。这对我在Firefox上有效。

  • 问题内容: 假设我有这个模型: 现在,如果我想高效地查看相册中的一部分照片。我这样做是这样的: 这只会执行两个查询,这正是我所期望的(一个查询得到相册,然后一个查询,例如“ SELECT * IN photos WHERE photoalbum_id IN()”。 一切都很棒。 但是,如果我这样做: 然后用!进行大量查询!我是在做错什么,还是django不够聪明,以至于它已经获取了所有照片并可以在

  • im使用pyqt5创建gui并使用matplotlib 但是当我尝试创建pyInster可执行文件时,它不起作用 我尝试了以下几种解决方案: 1-无法使用PyInstaller创建工作的PyQt5 Python可执行文件/ 2-在PyInstaller,为什么不会NumPy。随机的。作为模块的公共负载? 3-PyInstaller生成的可执行文件中出现Python SSL导入错误 我尝试使用cx\

  • 问题内容: 以下代码可在Google Chrome beta和IE 7中运行。但是,Firefox似乎对此有问题。我怀疑这是我的CSS文件如何包含的问题,因为我知道Firefox对跨域导入不太友好。 但这仅仅是静态HTML,而没有跨域问题。 在我的landing-page.html上,我像这样进行CSS导入: 在main.css中,我还有另一个导入,例如: 在type.css中,我有以下声明: 我

  • import "net/http/cookiejar" cookiejar包实现了保管在内存中的符合RFC 6265标准的http.CookieJar接口。 type PublicSuffixList type Options type Jar func New(o *Options) (*Jar, error) func (j *Jar) Cookies(u *url.URL) (cookies