代码之家  ›  专栏  ›  技术社区  ›  János

如何在异步调用和回调中使用OKHttp?

  •  0
  • János  · 技术社区  · 9 年前

    调查 OKHttp 并希望尽可能使用文档所声称的:“它支持同步阻塞调用和带回调的异步调用”。

    但是,如何设置回调,或者在收到响应后需要执行的代码块?我在他们的网站上找不到任何东西。

    我应该将呼叫嵌套到 Async 螺纹状:

    AsyncTask.execute(new Runnable() {
    @Override
    public void run() {
    //TODO your background code
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   János    9 年前

    从样品中

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

        Request request = new Request.Builder()
            .url("http://publicobject.com/helloworld.txt")
            .build();
    
        client.newCall(request).enqueue(new Callback() {
          @Override public void onFailure(Call call, IOException e) {
            e.printStackTrace();
          }
    
          @Override public void onResponse(Call call, Response response) throws IOException {
            try (ResponseBody responseBody = response.body()) {
              if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
    
              Headers responseHeaders = response.headers();
              for (int i = 0, size = responseHeaders.size(); i < size; i++) {
                System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
              }
    
              System.out.println(responseBody.string());
            }
          }
        });