问题标签 [okhttp3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1300 浏览

php - OkHttp POST 似乎没有发送请求正文

我正在尝试在 PHP 脚本上使用RetroFit2OkHttp3执行 POST 方法。我一直在完美地执行 GET 方法,但我在发布时遇到了问题。

我有一个我的HttpLoggingInterceptor设置OkHttpClient,它完美地记录了请求正文。但是我的 PHP 脚本没有接收到数据,所以我$_POST一得到数据就尝试输出,但它是一个空字符串。我无法判断 Android 端、服务器端或两者是否有问题。

我的RetroFit对象和OkHttpClient设置如下:

然后我的RestService界面是这样设置的:

正如我所提到的,这一切似乎都有效,但是当我打电话时:

我得到一组空括号。

0 投票
1 回答
5372 浏览

java - 改造缓存 504 Unsatisfiable Request (only-if-cached) 错误

我一直在测试改造缓存。我正在使用 retrofit2.0.0 beta2 和 okhttp:3.2.0。这是我的代码。

第一个请求很好。

第二个请求生成 504 错误。

我试图删除 Pragma。但是,同样的。和使用邮递员的结果,

缓存控制→无存储

Pragma →无缓存

为什么会导致这个 504 Unsatisfiable Request (only-if-cached) 错误?我该如何解决这个错误?

0 投票
1 回答
808 浏览

android - okhttp 没有下载文件

我正在使用 okhttp 从服务器下载视频。没有错误也不例外,但文件并没有在每个地方下载,但它似乎是这样。

这是代码:

进度显示正确,但视频未显示在目录中。

谢谢。

0 投票
1 回答
1015 浏览

php - 无法从 php 访问从 okhttp 发送的发布数据

我将带有 json 对象的 post 请求发送到服务器中的 php,但 php 一直告诉 $_POST 是空的。

这是好的http代码

这是php代码

0 投票
3 回答
2987 浏览

android - 使用 Glide 和 okhttp3 在 Stetho 中进行网络检查

如何结合 Glide 和 Stetho 使用 okhttp3 调试图像加载系统

我做了以下

1.增加了依赖

1.增加初始化

3.添加滑翔配置使用okhttp3

4.添加GlideModule元数据标签AndroidManifest.xml

5.滑动加载图像行

当我打开 chrome 开发工具时,它Resources Tab可以正常工作,但network tab不能!!!!

为什么?我的错误在哪里?是否建议okhttp3与 Glide 一起使用?以及如何在不使用 okhttp3 的情况下连接它

任何重复或链接都会有所帮助

0 投票
1 回答
17671 浏览

java - java.lang.NoClassDefFoundError: okhttp3.OkHttpClient$Builder

In my project, I have used OkHttp(version 2.5.0) as my network request library. But few days ago, I tried Retrofit2 as part of my app's network request library, as you know, the new Retrofit2 library dependence on OkHttp(version 3.2.0).So here comes the problem that when my app runs on android phone whose android version under android 5.0 always causes crash(larger version works well and causes no crash), the crash stack information shows as below:

From the stack trace, I guess that OkHttp(version 3.2.0) has some conflicts with OkHttp(version 2.5.0). Below I will give my external library configuration:

Hope anyone who knows the problem can give me a favor! Great thanks!

Update 1: Here is my ServiceGenerator.java :

0 投票
2 回答
5272 浏览

java - 使用 Retrofit 2.0 和 okhttp3 进行缓存

我正在尝试使用 Retrofit 和 OkHttp 来实现缓存。这是我已经完成的:

然后我将此拦截器添加到 HTTP 客户端:

.addInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)

我的响应目录中有文件,但是当我尝试在没有互联网连接的情况下加载内容时,它给了我以下错误:

无法解析主机“example.com”:没有与主机名关联的地址

我只想将我的 http 响应存储在某处并在没有互联网连接的情况下加载它。

如果有互联网连接,我想重写缓存。

0 投票
1 回答
2523 浏览

android - OKHttp Android没有通过http2 alpn连接到nginx

我有一个使用以下库的 android 应用程序(4.4.4+):

我使用 OpenSSL 编译的 nginx(版本 1.9.14)(版本 1.0.2g 源代码编译)在 centOS 7 上使用 nginx -V 确认了 openSSL 的使用。为反向代理启用了 nginx http2 的配置:

在服务器上运行命令:

回报:

从任何现代浏览器浏览 API URL 会导致在 SSL 日志和 HTTP/2 chrome 插件中显示 HTTP/2 连接。假设在 nginx/OpenSSL 中正确配置了 HTTP/2。

Android OKHttp 客户端拒绝 HTTP/2:

我编写了一个自定义 TLS 套接字工厂,以在 <= Android 4.4.4 上启用 TLS 1.2。

TLSv1.2 确实可以使用这个自定义套接字工厂在 4.4.4+ 上运行,但我也尝试在 5.0+ 上运行,无论是否使用自定义套接字工厂,都没有 HTTP/2 运气。

HTTP/2 在 kit-kat、棒棒糖和棉花糖上失败,但在“N”开发者预览版(又名纽约芝士蛋糕)上工作。不会抛出任何错误,只会以 HTTP/1.1 连接。我很难找到任何与 OKhttp 和 HTTP/2 相关的文章,大多数帮助问题/帖子只是说使用 ALPN,但没有资源来详细说明其用法。OkHTTP 文档并不清楚 HTTP/2 的使用和部署实践,但主页上说它支持它。任何帮助或专家指导将不胜感激,即使只是朝着正确的方向轻推也会是一个巨大的帮助。如果我错过了任何可能在此过程中提供帮助的内容,请告诉我,提前致谢!

更新 1:我发现了一个与此相关的 SO 问题,答案非常模糊:[SO 链接]如何在 Android 设备上将 http/2 与 Okhttp 一起使用?有一条评论建议使用码头,但仅限于桌面使用,而不是 Android 使用。

更新 2:本文显示 ALPN 已在 Android 4.4 中启用:https ://github.com/http2/http2-spec/wiki/ALPN-Status

更新 3:能够使用 +5.0 连接 HTTP/2,但不能使用 4.4.4。我不需要低于 4.4.4,因为内部目标设备是 http/2 的关注点,它们运行 4.4.4。我能够更新应用程序以使用 Google Play Services 安全协议作为 OKHttp 套接字连接,但我们使用的 4.4.4 设备未启用 Google,因此我无法在这些设备上使用 PlayServices 安全套接字。

0 投票
2 回答
1858 浏览

android - 如何在每篇文章中使用 Retrofit 和 OKHttp 添加默认参数

我只是在学习 Retrofit 和 OKHttp,现在我有一个问题。我的应用程序中的每个请求都是 POST,就像这样:

在每个 POST 中,都有两个相同的参数。所以以最简单的方式,我可以在每个方法中再添加两个@Field,例如@Field("token"),@Field("account")。但我认为必须有一个聪明的方法。

然后我认为 OkHttpClient 可以解决这个问题。

或者

第一种方法只是将所有字段替换为这两个。

第二种方法只是将这两个添加为 GET 参数,而不是 POST。

现在我完全不知道如何使这项工作。

0 投票
1 回答
3062 浏览

android - 防止 OkHttp/Retrofit 绕过代理

当 OkHttp 尝试代理,并且该路由失败一次时,该请求之后的每个请求都将完全绕过 Android 系统代理。所以很难用Charles来调试。

我目前有下面的代码,但它设置为仅用于调试版本。它工作得很好,但它是一个 hack,我们希望为所有用户发布它。

是否有一些我找不到的隐藏 OkHttpClient.dontBypassProxy 设置?或者,下面的代码看起来像一个好的解决方案吗?