2012-09-15 118 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