gpt4 book ai didi

android - 如果发生错误,如何使用Spring resttemplate和androidannotations从HttpResponse获取 header ?

转载 作者:行者123 更新时间:2023-12-03 08:30:54 26 4
gpt4 key购买 nike

如果发生错误,如何使用Spring resttemplate和androidannotations从HttpResponse获取 header ?

我知道如何在没有错误的情况下获取它们,但是在错误情况下我需要它们,因为我要使用的api发送了minorstatuscode来清除httpstatuscode。

最佳答案

基本上我找到了解决方案。

RestClient

@Rest(rootUrl = "https://proji.at/japi/v1", converters = { MappingJackson2HttpMessageConverter.class }, interceptors = { HttpBasicAuthenticatorInterceptor.class })
public interface ProjiRestClient extends RestClientErrorHandling {
RestTemplate getRestTemplate();
}

ErrorHandler:
@EBean
public class ProjiResponseErrorHandler implements ResponseErrorHandler {
private static final String TAG = "ProjiResponseErrorHandler";

@Override
public void handleError(ClientHttpResponse response) throws IOException {
int minor = 0;
try {
minor = Integer.parseInt(response.getHeaders(). getFirst("minor"));
} catch (Exception e) {
// TODO: handle exception
}
Log.i(TAG, "Response statuscode: " + response.getStatusCode() + " minor: "
+ response.getHeaders().getFirst("minor"));

throw new HttpMethodException(response.getStatusCode().value(), minor);
}

@Override
public boolean hasError(ClientHttpResponse response) throws IOException {

Log.i(TAG, "Response statuscode: " + response.getStatusCode());
if (response.getStatusCode().value() >= 400) {
return true;
}
return false;
}

}

使用RestClient的片段:
@RestService
ProjiRestClient restClient;
@Bean
ProjiResponseErrorHandler projiErrorhandler;

@AfterInject
void afterInject() {
restClient.getRestTemplate().setErrorHandler(projiErrorhandler);
}

然后您就可以从restClient调用方法了。
ResponseEntity<User> respone = restClient.getAuth(auth);

如果有人知道更好的解决方案,我将很高兴收到它的来信。

关于android - 如果发生错误,如何使用Spring resttemplate和androidannotations从HttpResponse获取 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24417917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com