2012-09-15 85 views
3

在我的Spring应用程序中,我使用RESTTemplate从外部API获取一些信息。此API要求您在提出请求时必须等待响应,直到您发出其他请求。这就是为什么我想知道如何做到这一点。当然不能使用计时器或类似的东西,因为每次从这个API的响应时间是不同的。REST模板等待API响应

不幸的是,这个应用程序需要RESTTemplate,我不能改变它。

回答

1

通常,当您发出请求时,您应该等待响应,但是您可以打开正在侦听传入数据的服务器套接字,并在收到响应时检查接受或拒绝响应的类型。因此,您使用客户端套接字发出请求并使用服务器套接字接收响应。

http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html

http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html

+0

@GarciaPL你是怎么用这个答案解决你的问题的? – basiljames

+0

我也很好奇。 – trashgod

+0

嗯,是的,我承认它不是一个很好的答案。 – fonZ

2

您可以使用一个标志一个singleton bean来实现这一点。在致电服务之前,请检查它是否为false。如果false使国旗true和呼叫服务。退出前使国旗false

因此,当​​服务正在进行,否则您可以发出一个新的请求。

+0

我真的不知道如何才能连接到一个外部api只使用布尔值... – fonZ

+0

@JonathanCruz由于他使用RESTTemplate调用外部api会像'String result = restTemplate.getForObject(“...'他希望在进行另一个可以由用户触发的调用之前确保没有挂起的请求,因此只需检查在某个静态类中设置的标志,然后在调用之前设置标志并在调用之后清除标志,因此在调用如果他发现国旗是真的,他可以要求用户稍后再试。 – basiljames

+0

我明白了,当我有一些时间时,我会阅读有关REST模板的内容。 – fonZ