Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring远程身份验证时如何处理停机场景?_Java_Spring_Spring Mvc_Authentication - Fatal编程技术网

Java spring远程身份验证时如何处理停机场景?

Java spring远程身份验证时如何处理停机场景?,java,spring,spring-mvc,authentication,Java,Spring,Spring Mvc,Authentication,我有一个基于SpringMVC的网站,在那里对用户进行身份验证,我需要调用第三方API(它与所有应用程序的核心用户数据库通信),并在那里对用户进行身份验证。 我能够成功地做到这一点,只是当第三方API由于某种原因关闭时,我的网站也会在任何访问者试图登录或注册时爆炸 我这样调用远程API: ResponseEntity ResponseEntity=restemplate.exchange(uri、HttpMethod.POST、request、LoginApiResponse.class) 在这

我有一个基于SpringMVC的网站,在那里对用户进行身份验证,我需要调用第三方API(它与所有应用程序的核心用户数据库通信),并在那里对用户进行身份验证。 我能够成功地做到这一点,只是当第三方API由于某种原因关闭时,我的网站也会在任何访问者试图登录或注册时爆炸

我这样调用远程API:

ResponseEntity ResponseEntity=restemplate.exchange(uri、HttpMethod.POST、request、LoginApiResponse.class)

在这里,LoginApiResponse.class是一个bean,它包含UserDetails和来自那里的响应可能包含的其他信息

该Bean大致如下所示:

public class LoginApiResponse {
    private HttpStatus status;
    private String message;    
    private String responseStatus;
    private UserModel userModel;
    ... ...
}
我有一个CustomResponseErrorHandler来处理我网站上的错误。 但是,当第三方站点关闭时,维护页面被配置为在任何类型的请求中返回,因此我得到的响应类型将为
text/html
,响应状态为
200 OK
。因此,这里没有遇到异常,我的
CustomResponseErrorHandler
也不起作用。相反,当代码无法根据调用将
text/html
类型响应转换为
LoginApiResponse
时,代码会爆炸。它抛出

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class org.habba.web.rest.registration.LoginApiResponse] and content type [text/html]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:109)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:811)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:795)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:574)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:547)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:468)

我如何避免这种情况发生,并提前确定第三方API的不可用性?

根据您所说的,您从API收到的正常响应的内容类型似乎是
application/json
。您可以使用
ResponseEntity
而不是
ResponseEntity
并使用
ResponseEntity.getHeaders().getContentType()
检查内容类型。如果内容类型不是您所期望的,您可以采取适当的措施。

给定的方法也不适用于我。给我同样的错误,没有找到合适的HttpMessageConverter。尝试使用字符串类型,这样工作,但这不是我想要的。