当前位置: 首页 > 面试题库 >

适用于Android和Java的翻新REST客户端不会终止

祝宏放
2023-03-14
问题内容

我正在研究适用于Android和Java的Retrofit REST客户端

在Eclipse中使用标准Java项目,我在使用@POST且返回类型无效。

进行异步调用。

一切都按预期工作,但是我的测试主方法永远不会终止。我必须手动停止每个测试执行。

为了使测试自动终止,我需要做什么(或停止做什么)?

这是我的Java代码。

import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;

public class Android {

    private static final RestAdapter mRestAdapter =
        new RestAdapter.Builder()
            .setEndpoint("http://localhost:8080/resources/registrations")
            .build();

    public static void main(final String... args) {

        final AndroidRegister androidRegister =
            mRestAdapter.create(AndroidRegister.class);

        Callback<Void> callback = manufactureCallback();

        androidRegister.androidRegisterInterface(
            new RegistrationIdJson("1111-2222-3333-4444"), callback);    
    }

    private static Callback<Void> manufactureCallback() {
        return new Callback<Void>() {

            @Override
            public void failure(final RetrofitError retrofitError) {
                System.out.println("retrofitError-->"
                    + retrofitError.getLocalizedMessage() + "<---");
            }

            @Override
            public void success(final Void returning,
                                final Response response) {
                System.out.println("-->" + returning + "<--->"
                    + response.getStatus() + "<---");
            }
        };
    }
}

问题答案:

默认情况下,Retrofit使用具有60s核心池超时的非守护程序线程池。您很少,很少希望以Callback这种方式使用Retrofit的异步行为。

如果你只是简单的测试,你可以叫setExecutorsRestAdapter.Builder,并通过同步执行作为第一个参数和null第二。这将允许您使用异步API,但可以在测试中获得同步行为。

还有一个同步执行器,如果您不知道如何做一个:

public final class SynchronousExecutor implements Executor {
  @Override public void execute(Runnable r) {
    r.run();
  }
}


 类似资料:
  • 问题内容: 有了JSR 311及其实现,我们有了一个强大的标准,可以通过REST公开Java对象。但是,在客户端,似乎缺少与SOAP的Apache Axis类似的东西-隐藏了Web服务并将数据透明地封送回Java对象的东西。 您如何创建Java RESTful客户端?使用HTTPConnection和手动解析结果?还是专业客户(例如Jersey或Apache CXR)? 问题答案: 这是一个古老的

  • 问题内容: 我正在开发一个项目,该项目需要解析一些受保护的网页中的数据。为了获得对这些页面的访问权限,我必须克服SAML身份验证形式(Shibboleth)。是否有人能够在Android(Java)中实现此标准?我已经读过这个线程:Android的SAML客户端实现? 但这并不能给我一个很好的解决方案。实际上,我需要 获取某些受保护网页的数据 以便对其进行解析,而不是让用户看到此类网页的内容。因此

  • 我有一个连接到WebSocket服务器并从服务器接收消息的微服务。我想在这个应用程序中集成Sleuth,因为这是我的一组微服务的网关。但是当我连接到WebSocket服务器并开始接收消息时,我无法在日志中跟踪ID,spanid。我期待着这样的事情: 但我得到了: 我的代码如下: 我们的pom条目包括:

  • 问题内容: 有人知道iOS的Elasticsearch客户端库吗?如果它也是迅速写的,那将是一个好处。 elasticsearch的“客户端”部分显示了多个平台的多个库,但对于iOS没有任何显示,我觉得有人必须这样做吗? 干杯 问题答案: 我怀疑是否有人- 上次我检查时没有,并且有充分的理由。请记住,为了允许IOS客户端(或Android)使用客户端库连接到Elasticsearch,您必须打开集

  • 问题内容: 我已经设置了Go rest api。并在登录时执行此操作: 为了检查会话,我有这样的东西: 如果我执行邮递员的请求,效果很好,但是当我从客户那里收到请求时,我会得到401。你们中的任何人是否经历过类似的事情?该商店是一个CookieStore。 我已经检查了ID,将sessionId变量替换为静态字符串。大猩猩会话使用大猩猩上下文注册一个新请求,当我这样做时,来自邮递员的请求不为空,但

  • 作为标题,我不知道为什么他们在VSCode或Android Studio中的终端内置不起作用。 bash:flatter:未找到命令 我已经在~/中设置了Flutter路径。bash_profile.这里是的结果 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dot net:~/。dot net/tools:/Appli