HttpResponse httpResponse = call(apiMethod, url, headerMap, formMap, rawJsonMap, rawJsonStr);
int status = httpResponse.getStatus();
if (302 == status) {
url = httpResponse.header("Location");
httpResponse = call(apiMethod, url, headerMap, formMap, rawJsonMap, rawJsonStr);
}
private HttpResponse call(Byte apiMethod, String url, Map<String, String> headerMap, Map<String, Object> formMap, Map<String, Object> rawJsonMap, String rawJsonStr) {
HttpResponse httpResponse = null;
if (apiMethod == Const.Api.ApiMethod.FLAG_GET) {
httpResponse = DHttpUtil.get(headerMap, url);
} else if (apiMethod == Const.Api.ApiMethod.FLAG_POST) {
if (Objects.nonNull(formMap) && formMap.size() > 0) {
httpResponse = DHttpUtil.post(headerMap, url, formMap);
} else if (Objects.nonNull(rawJsonMap) && rawJsonMap.size() > 0) {
httpResponse = DHttpUtil.post(headerMap, url, rawJsonStr);
} else {
httpResponse = DHttpUtil.post(headerMap, url);
}
} else if (apiMethod == Const.Api.ApiMethod.FLAG_PUT) {
if (Objects.nonNull(formMap) && formMap.size() > 0) {
httpResponse = DHttpUtil.put(headerMap, url, formMap);
} else if (Objects.nonNull(rawJsonMap) && rawJsonMap.size() > 0) {
httpResponse = DHttpUtil.put(headerMap, url, rawJsonStr);
}
} else if (apiMethod == Const.Api.ApiMethod.FLAG_DELETE) {
if (Objects.nonNull(formMap) && formMap.size() > 0) {
httpResponse = DHttpUtil.delete(headerMap, url, formMap);
} else if (Objects.nonNull(rawJsonMap) && rawJsonMap.size() > 0) {
httpResponse = DHttpUtil.delete(headerMap, url, rawJsonStr);
}
}
return httpResponse;
}
- 如上伪代码,如果遇到 302 状态码,则取出 Location 里的最终地址,再一次进行请求,如果里面还有,则把 if 用循环来做即可。