首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OkHttp MockWebServer无法接受android P(API28)设备测试中的连接

OkHttp是一个开源的HTTP客户端库,用于在Android和Java应用程序中进行网络请求。MockWebServer是OkHttp提供的一个用于模拟服务器的工具,可以用于测试网络请求和响应的行为。

然而,在Android P(API 28)设备上,使用OkHttp MockWebServer进行测试时可能会遇到连接问题。这是因为从Android P开始,Google引入了更严格的网络安全策略,要求所有的网络请求必须使用HTTPS协议,并且要求服务器的证书必须经过合法的认证。

为了解决这个问题,我们可以采取以下步骤:

  1. 配置服务器证书:在MockWebServer中,我们可以使用自签名证书来模拟HTTPS连接。首先,我们需要生成一个自签名证书,并将其配置到MockWebServer中。可以使用OpenSSL或者其他工具生成证书,然后将证书文件加载到MockWebServer中。
  2. 配置Android P设备的网络安全策略:在Android P设备上,我们需要在应用的网络安全配置文件中添加对自签名证书的信任。可以在res目录下创建一个network_security_config.xml文件,并在AndroidManifest.xml文件中引用该配置文件。在network_security_config.xml文件中,我们可以配置信任的证书,包括自签名证书。
  3. 更新应用代码:在应用代码中,我们需要使用OkHttp的SSL Socket Factory来加载自签名证书,并将其配置到OkHttp客户端中。可以使用以下代码片段来实现:
代码语言:txt
复制
// 创建自签名证书的SSL上下文
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagers, new SecureRandom());

// 创建OkHttp客户端
OkHttpClient client = new OkHttpClient.Builder()
    .sslSocketFactory(sslContext.getSocketFactory(), trustManager)
    .build();

通过以上步骤,我们可以在Android P设备上成功使用OkHttp MockWebServer进行测试。

关于OkHttp和MockWebServer的更多信息,你可以参考腾讯云的相关产品和文档:

请注意,以上答案仅供参考,具体实现可能因环境和需求而有所差异。建议在实际开发中参考官方文档和相关资源进行操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

安卓开发Model-View-Presenter(MVP模式)

在软件开发行业中找到一个Android开发架构标准是相当复杂。...View 在Android,我们视图实现将对应于一个活动或一个片段(在示例/项目中是片段),但它可以是一个ViewModel,甚至是一个可视化组件。...为了能够在视图和服务组件之前应用“演示者优先”设计,定义这两个接口,例如方法和事件 测试 在为我们应用程序编写测试时,重要是我们可以测试独立代码单元,这些代码单元在应用程序其他部分没有副作用,它们依赖关系可以被模仿...基础架构层(数据)也很容易测试,因为我们所要做就是模拟服务器响应,为此,我们将使用来自OkHttpMockWebServer。 发展方向?...观察前端架构演变,认为Android正在接近一个类似Redux架构并不是不合理

1.6K30

雨露均沾OkHttp—WebSocket长连接使用&源码解析

但是,WebSocket在TCP连接建立后,还要通过Http进行一次握手,也就是通过Http发送一条GET请求消息给服务器,告诉服务器我要建立WebSocket连接了,你准备好哦,具体做法就是在头部信息添加相关参数...关闭WebSocket连接 如果有同学想测试下WebSocket功能但是又没有实际服务器,怎么办呢?...:mockwebserver:4.7.2' 然后就可以新建MockWebServer,并加入MockResponse作为接收消息响应。...MockWebServer mMockWebServer = new MockWebServer(); MockResponse response = new MockResponse(...0x8 表示连接关闭 6) 0x9 表示ping 7) 0xA 表示pong 8) 0xB-F 保留用于未来非控制帧 是不是发现了些什么,这不就对应了我们应用几种格式吗?

3.1K50

android开发环境搭建实验报告总结_android开发实验报告

一、实验目的: 下载并熟悉 Android 开发工具,掌握 Android 移动端开发环境搭建、项目导入,并能够将项目部署到模 拟器和真机进行测试,掌握 Android 工程目录结构。...二、实验设备: 1. PC 机 2. Windows 操作系统 3. JDK13.0.2 4. Android Studio 安装包 5....4.3 Android SDK 配置 点击 Android Studio File Settings… ,在搜索框输入“SDK”关键字,右侧显示 Android SDK Location...在该界面将 API28 系统勾选,点击 Apply 自动下载。...测试程序,测试成功: 体会:如在安装 Android SDK 时,遇到信息“Failed to fetch URL…”错误提示,只需将 HTTPS 方式改为 HTTP 方式即可解决该问题。

2K50

Android P上使用Http

前言 不少同学在适配Android P时候会遇到not permitted by network security policy问题: //使用HttpUrlConnection时遇到异常 W/System.err...: java.io.IOException: Cleartext HTTP traffic to **** not permitted //使用OkHttp时遇到异常 java.net.UnknownServiceException...表示,为保证用户数据和设备安全,针对下一代 Android 系统(Android P) 应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密连接,因此运行...Android P 系统安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo...在Android P系统设备上,如果应用使用是非加密明文流量http网络请求,则会导致该应用无法进行网络请求,https则不会受影响,同样地,如果应用嵌套了webview,webview也只能使用

2K20

淘宝移动端统一网络库架构演进和弱网优化技术实践

因此,对于端侧无法直接获取 BSSID 设备,引入新存储主 key,即用户无线接入点 AccessPoint 信息,流程涉及 AMDC 端到端协同升级,大致流程如下图所示。...,Android 舆情反馈尤为突出,原因在于 iOS 系统侧实现了 Happy Eyeballs 机制确保快速 rollback 回 IPv4 链路,而 Android 设备没有。...Android 网络托管 Okhttp 代理:图片进一步分析源代码,我们找到了 okhttpandroid 系统侧位置和包名,即com.android.okhttp下。...Android Okhttp 源码实现:图片虽然是隐藏 API,仍可以通过反射方式进行,为了更友好编码实现,在编译期通过空实现依赖方式进行显式调用,同时确保在使用前对设备 okhttp 环境及兼容性做好检查...官方在版本 3.12.2+上修复,但 android 源码仍使用 2.x 版本导致无法修复。

66020

APP各种抓包教程

自然而然就无法建立连接,所以必须想办法让 app 信任,才能继续抓包。当然这个分为两种情况: (1)单项校验-客户端校验服务端证书。...进行抓包 如果出现还是依然无法绕过 SSL Pinning 情况,可以参考下面两篇文章 Android 抓包总结 [Frida.Android.Practice (ssl unpinning)](https...❗️❗️❗️ 注意:.p12后缀证书文件是由 .crt证书和 key 文件合并成.p12证书文件,并且在合并生成 .p12 文件时候必须对证书进行加密(也就是加个证书密码),不加密码 Burpsuite...o [output filepath] 保存到文件 [okHttp app 案例](http://m.bandao.cn/android/news/bandao_news.apk "okHttp...w=1280&fmt=png) 然后复制被混淆后类名(上图红色框圈住内容),粘贴到 okhttp_poker.js 文件(如下图),并进行`保存`,Frida 会自动实时识别更新后脚本内容执行相关操作

7.9K54

网络请求框架OkHttp3全解系列(一):OkHttp基本使用

欢迎关注公众号:胡飞洋 预计okhttp系列有4篇,使用方法、流程分析、缓存和连接池、使用扩展及封装。 这是第一篇,按照惯例,就介绍基本使用方法,比较简单。 好了,闲话少叙,开始!...所需 预备知识: HTTP协议详解 HTTP请求报文和响应报文 现在Android网络请求框架,基本都是okhttp和Retrofit一统天下,而Retrofit又是以okhttp为基础,所以系统学习...okhttp是由square公司开发,Android公认最好用网络请求框架,在接口封装上做简单易用,GitHub地址:https://github.com/square/okhttp。...OkHttp 会自动恢复一般连接问题,如果你服务有多个IP地址,当第一个IP请求失败时,OkHttp会交替尝试你配置其他IP。...考虑一种场景--注册场景,用户填写完姓名、电话,同时要上传头像图片,这时注册接口请求体就需要 接受 表单键值对 以及文件了,那么前面讲post就无法满足了。

24.9K52

Android必知必会-Stetho调试工具

Android 调试工具,使用该工具你可以在 Chrome Developer Tools查看APP布局, 网络请求(仅限使用Volle, okhttp网络请求库), Sqlite, Preference..., 一切都是可视化操作,无须自己在去使用adb, 也不需要root你设备 本人使用自己Nubia Z9 Mini作为调试机,由于牵涉到Sqlite数据库,所以尝试了很多办法把它Root了,然而...Root之后就无法正常升级系统。...今天得知一调试神器Stetho,无需Root就能查看数据库以及APP布局(这一点没有Android Device Monitor使用方便,但是Android Device Monitor在Mac上总是莫名其妙出问题...4.使用 运行重新编译后APP程序,保持手机与电脑连接,然后打开Chrome浏览器,在地址栏里输入:chrome://inspect然后选择自己设备下运行APP进程名下Inspect链接 即可进行调试

43150

项目管理Maven系列(四)- 结合Selenium、Appium、OkHttp、HttpClient

, Android // Emulator, Galaxy S4 等等 // 在IOS上,这个关键字值必须是使用`instruments -s devices`得到可使用设备名称之一...// 连接物理设备唯一设备标识 capabilities.setCapability("udid", "316d9073"); // `.ipa`或`.apk`文件所在本地绝对路径或者远程路径...应用包名 capabilities.setCapability("appPackage", "com.example.testapp"); // 要从包启动Android...开始测试运行在任何模拟运行,或设备插入 capabilities.setCapability("noReset", true); // 执行完整重置...// Android 停止应用程序,清除应用程序数据并在测试后卸载apk // IOS 在真机设备测试后卸载应用程序,在模拟器测试后摧毁模拟器 capabilities.setCapability

2.3K10

Android 开发17个建议,紧跟Google官方,进阶必看!

Android Fragment和Activity通常上是控制器类(http://www.informit.com/articles/article.aspx?p=2126865)....for Android.可以跑你生成JUnit测试, 只当做单元测试时使用 Robolectric ,views 不用 它是一个最求提供"不连接设备"为了加速开发测试, 非常时候做 models...* 对于UI测试你不需 Robotium 跑与设备连接测试。 但它可能会对你有益,是因为它有许多来帮助类获得和分析视图,控制屏幕。...Genymotion 模拟器运行更快秒帧速度,比起典型AVD模拟器。他有演示你APP工具,高质量模拟网络连接,GPS位置,等等。它同时还有理想连接测试。...你也可能需 要测试Samsung指定API,若这样的话你还是需要购买一个真实Samsung设备

54410

快手抓包问题分析

一般来说,常规方法无法抓安卓应用 https 包,通常有以下几种可能: 证书信任问题。在 Android 7 以上,应用会默认不信任用户证书,只信任系统证书,如果配置不得当则是抓不到包。...最稳妥验证方式当然是白盒测试看源码,不过快手反编译代码看起来也费劲,于是考虑直接当成黑盒来测试看看。以下验证方式均以 快手 8.2.31.17191 版本为例。...因此还是老老实实把根证书放在默认路径下。 准备设备 为了方便测试,我在 arm 服务器上使用 redroid 准备了一台安卓虚拟机。...# 在本地主机上连接远程arm服务器上安卓虚拟机 adb connect :5555 # 启动scrcpy scrcpy 到这一步骤时,可以检测安卓网络应该都已经是通了.../4.x/okhttp/okhttp3/-ok-http-client/-builder/proxy/

3.6K10

由浅入深,聊聊OkHttp那些事

引言 在 Android 开发世界,有一些组件,无论应用层技术再怎么迭代,作为基础支持,它们依然在那里。 比如当我们提到网络库时,总会下意识想到一个名字,即 OkHttp 。...在官方描述OkHttp 是一个高效 Http请求框架 ,旨在 简化 客户端网络请求,提高 请求效率。 具体设计思想与特性如下: 连接复用 :避免在每个请求之间重新建立连接。...通俗一点就是,ExchangeCodec 是请求处理器,它内部封装了 OkHttp 执行网络请求细节实现,其通过接受一个 Request 对象,并在内部进行处理,最终生成一个符合 HTTP 协议标准网络请求...这个其实主要说是 ConnectInterceptor 拦截器初始化 Exchange 时内部做事,具体如下: OkHttp 使用连接池 RealConnectionPool 管理所有连接连接池将所有活动连接存储在池中...,带路由,不带多路复用; 手动创建一个新连接; 再次尝试从连接池中获取一个连接,带路由与多路复用; 当然 OkHttp 也支持自定义连接池,具体如下: 图片 上述代码,创建了一个新连接池,并设置其保留最多

1.2K40

【腾讯经验】闪现社区App网络优化

游戏社区网络请求主要为App内部api请求,这类型请求特点是数据量相对较小、请求集中、并发量高且不可缓存等,原有的App网络框架有如下问题: Android使用OkHttp3作为基础库,iOS使用...OkHttp3如果没有做深度定制,在高并发和弱网环境下性能一般;NSURLSessionDataTask是一个黑盒子,无法深度改造和定制。...[image.png] Lighting内部实现参考了OkHttp3责任链模式,所有的网络请求通过一系列拦截器来实现: [image.png] 通过责任链模式,可以解耦请求过程各个阶段,并且允许外部自定义拦截器进行控制...0RTT; 网络抖动时,TCP会产生阻塞,同时无法多路复用,而QUIC流与流之间是独立,丢包后不会互相影响; TCP协议需要设备支持,比如当前主流移动设备均不支持TLS1.3,老设备甚至不支持TLS1.2...[image.png] 注:经过测试,实验室环境下curl性能比OkHttp3稍差,但是由于我们所有网络请求都已经切quic,curl只是起兜底作用,所以已经满足使用。

2.3K72

由浅入深,聊聊OkHttp那些事(很长,很细节)

引言 在 Android 开发世界,有一些组件,无论应用层技术再怎么迭代,作为基础支持,它们依然在那里。 比如当我们提到网络库时,总会下意识想到一个名字,即 OkHttp 。...在官方描述OkHttp 是一个高效 Http请求框架 ,旨在 简化 客户端网络请求,提高 请求效率。 具体设计思想与特性如下: 连接复用 :避免在每个请求之间重新建立连接。...通俗一点就是,ExchangeCodec 是请求处理器,它内部封装了 OkHttp 执行网络请求细节实现,其通过接受一个 Request 对象,并在内部进行处理,最终生成一个符合 HTTP 协议标准网络请求...这个其实主要说是 ConnectInterceptor 拦截器初始化 Exchange 时内部做事,具体如下: OkHttp 使用连接池 RealConnectionPool 管理所有连接连接池将所有活动连接存储在池中...,带路由,不带多路复用; 手动创建一个新连接; 再次尝试从连接池中获取一个连接,带路由与多路复用; 当然 OkHttp 也支持自定义连接池,具体如下: 上述代码,创建了一个新连接池,并设置其保留最多

1.1K30

Fiddler 抓包 Android

,用户 标签页可以看到安装证书 点击证书,可以查看详情 接下来就可以打开Fiddler,在模拟器打开浏览器测试下https数据包是否可以正常抓到和解析了,以百度为例 打开模拟器默认带浏览器...这里以HTTP为例简单说明下 客户端需要完成一次HTTP请求,通常需要先找到服务器,客户端会根据http请求url主机名(实际会使用host主角名)及其端口与目标主机建立tcp连接,建立连接后会将...,将指定终端设备上发往80及443端口数据直接转发到代理服务器 目标端口上 优势: 可以针对连接到网络设备终端设备进行分别配置,而手机等终端设备不需要进行任何设备 劣势: 需要单独硬件设备...方法3:使用V**将终端设备流量转发到代理服务器 优势: 使用V**软件不用添加其他测试。...Xposed 启用 JustTrustMe 模块 重启 Android 设备 完成 PS: 再次 拖入 JustTrustMe.apk 4.

2.4K20

精品连载丨安卓 App 逆向课程之五 frida 注入 Okhttp 抓包下篇

代码完整如下,建议使用该份代码测试: function hook_okhttp3() { // 1. frida Hook java层代码必须包裹在Java.perform,Java.perform...准备相应类库,用于后续调用,前两个库是Android自带类库,后三个是使用Okhttp网络库情况下才有的类 var ByteString = Java.use("com.android.okhttp.okio.ByteString...,需要注意,Builder类是Okhttpclient内部类,Java编译器会将内部类编译成外部类名内部类名格式,因此不论Frida还是Xposed,如果我们想对内部类进行操作,都应该使用连接符。...如果采用默认方式创建Okhttpclient,这两个Hook点就会失效,且在大佬hook代码逻辑,会将原拦截器数组清空,这可能会造成App本身拦截器失效或者无法访问网络,我们不妨做一些修改。...(需要注意是,无法加载JAR包): Java.openClassFile(dexPath).load(); 2.3 依照yangHook脚本,编写了对应MyInterceptor.java类(有所阉割

7.8K30

Android技能树 — 网络小结(4)之socketwebsocketwebservice

Android技能树 — 网络小结(6)之 OkHttp超超超超超超超详细解析 Android技能树 — 网络小结(7)之 Retrofit源码详细解析 正文 1....所以初步是设备Aip,设备A端口,设备Bip,设备B端口,换成我们平常通俗说法就是客户端ip,客户端端口,服务端ip,服务端端口,外加上我们Socket用来操作TCP,同时也可以操作 UDP...详细可以看看这篇: 【腾云阁】WebSocket 浅析 那我们既然是安卓开发,那我们怎么样使用WebSocket呢,我想现在很多人都应该网络请求这块使用Okhttp吧,虽然我们平时就是用Okhttp...WebService 首先如果有人做过相关 WebService 的话,就会觉得大体上其实和平常 http 请求差不多,都是发送一个请求,然后接受相应返回数据,可能最直观差别是平常我们用 http...WSDL详细解析

12510
领券