问题标签 [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 回答
3414 浏览

android - 当使用 Okhttp 和 GSON 库解析 JSON 响应时,我会在主线程异常上获取网络

我已经在我的项目 gradle 文件中给出了依赖项,如下所示。

编译'com.google.code.gson:gson:2.4'

编译'com.squareup.okhttp3:okhttp:3.1.2'

我收到异常android.os.NetwokOnMainThreadException

我不知道如何解决这个问题,因为我已经查看了下面链接中给出的 OKHTTP 食谱表格。 https://github.com/square/okhttp/wiki/Recipes

0 投票
1 回答
907 浏览

android - If-None-Match 没有在我的请求中通过

我已经看到关于这个主题的长时间讨论,并且声称它已在 2.3.0 中修复。这是我正在使用的组合

我在收到的回复中看到的日志有 Etag;但是我的后续请求没有在其标头中传递 If-None-Match 。我通过我的代码显式插入 If-None-Match 对其进行了测试,缓存有效并且预期响应。所以我使用的库版本肯定有问题,或者我的代码有什么不好的地方。

这里我设置了okClient。

我的标头拦截器包含非常关注我的 API 本身的逻辑。这里是

这是我设置缓存的方法。

寻找一些快速有效的响应,因为我已经花了合理的时间找到解决方案,但没有运气。

谢谢

0 投票
2 回答
1874 浏览

java - 从邮递员获得 OKHTTP 不同的结果

我正在尝试从服务器获取一些数据。主要问题是我没有服务器访问权限,但我当然知道请求详细信息,我使用 PostMan 测试服务器调用,而不是使用 OkHttp 在 android 上实现它们。

这是我使用 HttpUrlConnection 或 OkHttp 从 android 端的服务器获得的信息:

{"collection":{"version":"1.0","href":" http://development.abc.com:80/ ","links":[{"href":"#","re​​l" :"header","prompt":"学生"},{"href":"#","re​​l":"header","prompt":"CFA"},{"href":"signup"," rel":"header trial","prompt":"免费试用"},{"href":"about","re​​l":"footer sidebar","prompt":"About"},{"href": "推荐","re​​l":"页脚侧边栏","prompt":"推荐"},{"href":"contact","re​​l":"footer","prompt":"联系方式"},{"href":"faq","re​​l":"footer sidebar","prompt":"FAQs"},{"href":"login","re​​l":"login","prompt “:“登录”}],.......

我在两边都使用相同的标题,即

并使用相同的凭据进行测试登录:

奇怪的是,相同的服务器调用在 PostMan 中给出了以下数据

{“集合”:{“版本”:“1.0”,“href”:“ http://development.abc.com:80/ch/re/videos ”,“链接”:[{“href”:“ http ://development.abc.com:80/ch/re/vr ", "rel": "menu vrated", "prompt": "Vrated" }, { "href": " http://development.abc .com:80/user/watcr ", "rel": "menu watchlater", "prompt": "稍后观看" }...

这是我的代码:

同一个服务器调用如何返回不同的结果。

我从“ Curl 的结果与 Postman 的结果不同”中检查了一个还应该添加user agent标题的人,所以我也尝试了这个,但没有运气。

还有一件事,如果我为此调用使用了错误的凭据(即正文:电子邮件、密码),我在 Okhttp 和 PostMan 上都会收到相同的错误。

谢谢。

0 投票
1 回答
2613 浏览

java - OkHttpClient 无法取消按标签调用

我最近升级到OkHttp3,并注意到您不能再直接从客户端取消调用标签。这必须由应用程序现在处理。

在此处的变更日志中说明:

取消批量调用现在是应用程序的责任。 通过标签取消调用的 API 已被移除,并被更通用的机制所取代。调度程序现在通过它的 runningCalls() 和 queuedCalls() 方法公开所有正在进行的调用。您可以编写代码,按标签、主机或其他选择调用,并在不再需要的调用上调用 Call.cancel()。

我正在使用我的简单实用程序方法自行回答这篇文章,以取消正在运行或排队的按标签呼叫。

0 投票
3 回答
2853 浏览

android - 使用 retrofit2+okhttp3 缓存响应数据

我在网络请求中使用 retrofit_2 (beta4) 和 okhttp_3 库。当网络关闭并且应用程序必须显示上一个相同请求的响应数据时,我需要缓存响应数据。我发现的所有解决此问题的指南都使用 okhttp lib(不是 okhttp_3)。我试图解决问题:

但这不起作用。所有请求在网络开启时都能正常工作,但在网络关闭时不会返回缓存数据。请帮忙解决这个问题。

0 投票
3 回答
376 浏览

android - 创建 gradle 依赖项 - 删除对其自身依赖项的访问权限

我正在开发的一个未发布的 android 库中有一个第三方网络库——在这种情况下是 OkHttp。

使用此库作为依赖项的项目现在也可以使用该网络库创建对象。

我可以限制或禁用对包含在我的库中的网络库的访问吗?

0 投票
0 回答
445 浏览

android - 将 mp4 视频上传到服务器,SSLException

通过 okhttp3 将视频上传到服务器时出现 SSLException。

错误是

视频大小为 15.5 MB。有没有想过我做错了什么?先感谢您!

我能够发送小于 5MB 的大小。在后端我被告知设置限制'client_max_body_size' == 60MB

0 投票
1 回答
3197 浏览

java - 我在哪里可以获得在 jdk 1.6 中编译的 OkHttpClient 版本?在 WAS 7 上运行时出现 UnsupportedClassVersionError

java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version;class=okhttp3/MediaType, offset=6 这是我在 WAS 7 上运行代码时遇到的异常。我认为 okhttp 代码是使用 Java 7 或更高版本编译的,当我尝试在 WAS 7 上使用它时使用 java 6。我正在使用来自 http://square.github.io/okhttp/的最新 jar (v 3.2)

0 投票
0 回答
662 浏览

java - 使用 byteStream 时 OkHttpClient 泄漏连接

我的 Logcat 消息中不断收到连接泄漏警告,即使我已经关闭了我发出的每个请求的每个正文。

我有两个用于 GET 和 POST 请求的包装器方法,它们启动请求并传回响应。

我有第三种方法,它InputStream通过body().byteStream()像这样读取响应来处理将响应主体转换为字符串。

每个单独的getRequest()postRequest()我调用的方法都跟随着该getResponseBodyAsString()方法,如果用户在请求之间注销,则主体也将关闭。但是我仍然收到连接泄漏警告..

如果您需要任何其他代码,请随时询问。

提前谢谢。

编辑

另一个代码块,不知道是否会有所帮助。每个调用getRequest()postRequest()封装在ASyncTask捕获任何异常的对象中的单个对象。

现在,没有什么可以关闭body()这些响应的,但是,在零情况下,当我看到泄漏警告时,会被ASyncTask取消。所以不能有任何异常阻止它被关闭。

编辑2

阅读这篇文章后,我意识到如果您手动添加“Accept-Encoding...gzip”标头,GZIP 不是透明处理的。删除手动添加确实可以透明地对其进行解码,但是,我在响应正文中只得到了一行文档。

GZIP 透明处理

<td align="center"><img width="208" height="110" src="images/alert_loginlogo.gif" /></td

从字面上看,这就是我得到的全部。如果我自己处理解码流,我可以毫无问题地获得整个文档。

这可能是图书馆中的一个错误,我在这里不知所措。

0 投票
1 回答
1151 浏览

android - Android,okhttp同时上传文件和json

我okhttp3,想可以上传文件,上传json数据,但是发现只能同时上传HashMap,请问,怎么上传JSON?发现RequestBody类方法create,上传json和上传文件方法都重载了