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

如何使用OKHTTP进行并发网络请求?

融渊
2023-03-14
  1. OKHTTP在某种程度上支持并发请求API吗?
  2. 如果没有,最好的实现方法是什么?

共有1个答案

慕嘉茂
2023-03-14

OkHttp本机有效地支持异步请求,例如共享最佳连接数。

https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/recipes/asynchronousget.java

对于问题的第二部分,您可以使用CountdownLatch,或者您可以像下面这样桥接到java期货

public class OkHttpResponseFuture implements Callback {
  public final CompletableFuture<Response> future = new CompletableFuture<>();

  public OkHttpResponseFuture() {
  }

  @Override public void onFailure(Call call, IOException e) {
    future.completeExceptionally(e);
  }

  @Override public void onResponse(Call call, Response response) throws IOException {
    future.complete(response);
  }
}
  private Future<Response> makeRequest(OkHttpClient client, Request request) {
    Call call = client.newCall(request);

    OkHttpResponseFuture result = new OkHttpResponseFuture();

    call.enqueue(result);

    return result.future;
  }
 类似资料:
  • 我需要使50 http获取请求尽快与Android的改型。我正在使用OKHTTP的改型。目前,与普通Java和相比,Retrofit的工作做得很差:对于所有50个请求,如果我为设置池大小20,则为Retrofit设置50sec,为普通设置30sec,而为Retrofit/OkHttp设置。 如果查看logcat,我可以看到无论在中设置了什么,registfit最多执行5个并发请求,而在中,并发请求

  • 问题内容: 我正在尝试做的事情 :: 我正在尝试学习 Okhttp 在android中进行网络通话的用法 我做了什么 :: 我 在这里 阅读了他们的文档 __ 我已经在项目中下载并添加了JAR 我从 这里 使用他们的示例代码 __ MyCode :: MainActivity.java 我面临的错误 :: 在这一行中, 我收到以下错误消息: 客户无法解析为变量 如何解决这个问题! {更新} 现在我

  • 问题内容: 我读了一些将jsons发布到服务器的示例。 有人说: OkHttp是Java提供的HttpUrlConnection接口的实现。它提供用于编写​​内容的输入流,并且不知道(或不在乎)内容的格式。 现在,我想用名称和密码的参数对URL进行常规发布。 这意味着我需要自己将名称和值对编码为流? 问题答案: 当前接受的答案已过期。现在,如果您想创建一个发布请求并向其中添加参数,则应该使用Mul

  • 我阅读了一些将jsons发布到服务器的示例。 有人说: OkHttp是Java提供的HttpUrlConnection接口的实现。它提供了一个用于写入内容的输入流,而不知道(或关心)该内容是什么格式。 现在我想用name和password参数对URL做一个普通的post。 这意味着我需要自己将名称和值对编码成流?

  • 问题内容: 我需要能够 使用 OKHTTP* 来 管理 一些请求,使用来通过输入地址来接收一些预测。该 问题是 ,我插入每次 CHAR 它将使一个新的请求,但在同一时间,我需要取消前一个!例如:纽约市=同时请求13个!因此,我仅使用一个实例来尝试取消已请求但没有成功的任何内容。这就是我所做的! * 我检查对象是否为null并取消请求,但仍然不断! 问题答案: 关于以下内容:

  • 问题内容: 在或中,是否有一个选项可以指定网络接口来发起连接? 编辑:在OS级别的AFAIK,我可以指定地址级别,或将负载平衡到路由表中。但是我软件中接口选择的方式不止于此,我想知道我是否可以在代码中做到这一点。 问题答案: 节点具有以下内置功能: http://nodejs.org/api/net.html#net_net_connect_options_connectionlistener h