1 设置全局异常处理
@ResponseBody
@ControllerAdvice
public class MyControllerAdvice {
@ExceptionHandler(value = Exception.class)
public String errorHandle(Exception e){
e.printStackTrace();
return ResultResponse.getJsonResult(-1, e.getMessage());
}
}
2 设置跨域问题
@Configuration
public class MyConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "DELETE", "PUT","PATCH")
.maxAge(3600);
}
};
}
}
3 规范返回结果
public class ResultResponse {
public static final String CHECKDATAERRORRESULT = "{\"code\":-1,\"data\":[],\"message\":\"请求参数错误!\"}";
public static final String UPDATADATAERRORRESULT = "{\"code\":-1,\"data\":[],\"message\":\"数据库操作失败!\"}";
public static String getJsonResult(int code, Object...params){
Map map = new HashMap();
map.put("code", code);
String message = (params.length >= 1 && params[0] instanceof String) ? (String)params[0] : "";
map.put("mssage", message);
Object data = (params.length >= 2) ? params[1] : new ArrayList();
map.put("data", data);
Gson gson = new Gson();
return gson.toJson(map);
}
}
4 发送请求
RestTemplate restTemplate=new RestTemplate();
String uri="https://graph.qq.com/user/get_user_info?access_token=" + access_token +
"&oauth_consumer_key=oauth_consumer_key&openid=" + openid;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<String> entity = new HttpEntity<String>(headers);
String strbody = restTemplate.exchange(uri, HttpMethod.GET, entity,String.class).getBody();
JsonObject jsonObject = (JsonObject) new JsonParser().parse(strbody);
nickName = jsonObject.get("nickname").getAsString();
imgUrl = jsonObject.get("figureurl_qq_1").getAsString();
5 测试