标签: okhttp

如何使用OkHttp在Android上实现cookie处理?

使用OkHttp by Square https://github.com/square/okhttp,我该怎么做:

  1. 检索从服务器返回的cookie
  2. 存储cookie以用于即将到来的请求
  3. 在后续请求中使用存储的cookie
  4. 更新后续请求返回的cookie

理想情况下,每次请求都会自动存储,重新发送和更新cookie.

cookies android okhttp

46
推荐指数
3
解决办法
4万
查看次数

如何使用Square OKHTTP固定证书?

我想我需要创建一个新的SSL套接字工厂?此外,出于显而易见的原因,我不想使用全局SSL上下文(https://github.com/square/okhttp/issues/184).

谢谢!

编辑:

从okhttp 2.1.0开始,您可以非常轻松地修复证书.

请参阅此处的源代码以开始使用

android okhttp

45
推荐指数
4
解决办法
3万
查看次数

访问OkHttp Response的正文字符串两次会导致IllegalStateException:closed

我通过OkHttp库实现我的http调用.一切正常,但我注意到,当我作为响应的字符串访问身体两次时,IllegalStateException将被抛出.也就是说,我(例如):Log.d("TAG", response.body().string())之后我真的想要使用那个字符串processResponse(response.body().string()).但是第二次调用会抛出异常消息closed.

怎么可能两次访问字符串导致失败?我想处理该响应而不需要添加包装器/虚拟对象只是为了保存一些值(如header,body,statuscode).

android okhttp

44
推荐指数
3
解决办法
1万
查看次数

OkHttp/Retrofit默认超时

我想知道我应该为我的改装客户设置多少秒.

  1. 我应该使用多少秒作为默认超时?
  2. OkHttp/Retrofit的默认超时是什么,我们应该使用默认值吗?

android timeout httprequest retrofit okhttp

44
推荐指数
2
解决办法
4万
查看次数

预期 Android API 级别为 21+,但为 30

我怎么可能收到这条消息?这没有任何意义。我正在使用com.squareup.retrofit2:retrofit:2.9.0

     Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 30
    at okhttp3.internal.platform.AndroidPlatform$Companion.buildIfSupported(AndroidPlatform.kt:370)
    at okhttp3.internal.platform.Platform$Companion.findPlatform(Platform.kt:204)
    at okhttp3.internal.platform.Platform$Companion.access$findPlatform(Platform.kt:178)
    2020-09-16 12:37:07.645 6480-6480/lv.ltt.gasogmp.dev_v3 E/AndroidRuntime:     at 
    okhttp3.internal.platform.Platform.<clinit>(Platform.kt:179)
Run Code Online (Sandbox Code Playgroud)

android okhttp

42
推荐指数
2
解决办法
1万
查看次数

如何为okhttp 2.x请求指定默认用户代理

我在我的Android应用程序中使用okhttp 2.0,并没有找到为所有传出请求设置一些常用用户代理的方法.

我以为我可以做点什么

OkHttpClient client = new OkHttpClient();
client.setDefaultUserAgent(...)
Run Code Online (Sandbox Code Playgroud)

......但是没有这样的方法或类似方法.当然我可以提供一些扩展实用程序方法,它会将RequestBuilder包装起来.header("UserAgent")然后我会用它来构建我的所有请求,但我想也许我错过了一些现有的和更简单的方法?

android square okhttp

41
推荐指数
6
解决办法
3万
查看次数

从响应中获取标题(Retrofit/OkHttp客户端)

我正在使用OkHttp客户端和Jackson进行Json Serialization的Retrofit,并希望得到响应的标题.

我知道我可以扩展OkClient并拦截它.但这是在反序列化过程开始之前.

我基本上需要的是将标题与反序列化的Json对象一起使用.

android json jackson retrofit okhttp

40
推荐指数
2
解决办法
4万
查看次数

是否可以在OkHttp 2.0中禁用以下重定向?

在Android中,我想使用新的OkHttp 2.0来请求一些URL,但我想要更多地控制重定向.我已经找到启用或禁用以下HTTPS→HTTP或HTTP→HTTPS重定向的选项,但我不想遵循任何重定向,因此我可以尽快更新我的GUI,并选择是否遵循它们应用逻辑.我没有看到这样做的选项.是否有可能,如果可能,我该如何实现这一目标?

redirect android okhttp

39
推荐指数
1
解决办法
1万
查看次数

Retrofit和OkHttpClient,在失败方法中捕获连接超时

我有以下设置:

final OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(5, TimeUnit.SECONDS);
okHttpClient.setConnectTimeout(5, TimeUnit.SECONDS);

RestAdapter.Builder builder = new RestAdapter.Builder()
        .setEndpoint(ROOT)
        .setClient(new OkClient(okHttpClient))
        .setLogLevel(RestAdapter.LogLevel.FULL);
Run Code Online (Sandbox Code Playgroud)

我试图处理我的服务器关闭和用户获得连接超时异常的情况,这是我的日志记录:

java.net.SocketTimeoutException: failed to connect to /192.168.0.53 (port 3000) after 5000ms
Run Code Online (Sandbox Code Playgroud)

完整日志记录:http://pastebin.com/gscCGb7x

有没有办法将其转换为改装故障方法,以便我可以在那里处理它?

提前致谢!

android connection-timeout retrofit okhttp

37
推荐指数
4
解决办法
6万
查看次数

如何让反应机构改造例外?

我试图通过Android应用程序中的改造连接到休息服务.我得到了回复.但是当服务有一些错误响应时,会发生转换异常,现在我想根据响应主体做一些操作.但我得到的响应正文为NULL.但改装日志有一条错误消息.为什么会这样呢?

D/Reftofit log(24856): OkHttp-Received-Millis: 1397527055676
D/Reftofit log(24856): OkHttp-Response-Source: NETWORK 200
D/Reftofit log(24856): OkHttp-Sent-Millis: 1397527055492
D/Reftofit log(24856): Server: Apache/2.2.22 (Ubuntu)
D/Reftofit log(24856): X-Powered-By: PHP/5.3.10-1ubuntu3.10
D/Reftofit log(24856): {"result":"Invalid Token ID"}
Run Code Online (Sandbox Code Playgroud)

码:

public void failure(RetrofitError retrofitError) {
    String response = null;
    TokenError tokenError = (TokenError) retrofitError.getBodyAs(TokenError.class);
    response = tokenError.getErrorDetails();
    Log.e(TAG, response);
    if (response != null && response.contains("Invalid Token ID")) {
        GroupDataProvider.getInstance().onFailure();
    }

}
Run Code Online (Sandbox Code Playgroud)

我在这里得到tokenErrornull.我不知道为什么?我是否需要使用rest适配器设置某些内容,以便将响应传递给改进的错误对象.

java rest android retrofit okhttp

36
推荐指数
2
解决办法
3万
查看次数