RestClientHttpRequestInterceptor.java 1.97 KB
package com.cjs.site.util.net;

import java.io.IOException;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.http.client.support.HttpRequestWrapper;

import com.cjs.site.util.file.ReadResourceUtils;
import com.cjs.site.util.lang.DateEnum;
import com.cjs.site.util.lang.DateUtil;
import com.cjs.site.util.web.DesUtil;

/**
 * RestTemplate拦截器
 * 
 * @author tongyufu
 *
 */
public class RestClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {

    private final static Logger log = LoggerFactory
        .getLogger(RestClientHttpRequestInterceptor.class);

    @Override
    public ClientHttpResponse intercept(HttpRequest request, byte[] body,
                                        ClientHttpRequestExecution execution) throws IOException {
        Properties props = ReadResourceUtils.getPropertyFile("/config.properties");
        HttpRequestWrapper wrapper = new HttpRequestWrapper(request);
        HttpHeaders headers = wrapper.getHeaders();
        String secretAccessKey = props.getProperty("zhaoonline.key");
        String timestamp = DateUtil.getNow(DateEnum.UNSIGNED_DATE_TIME);
        String clientId = props.getProperty("zhaoonline.clientId");
        String host = props.getProperty("zhaoonline.host");
        String sign = clientId + ":";

        sign += DesUtil.MD5(clientId + secretAccessKey + timestamp);
        sign += " " + timestamp;

        //请求头信息
        headers.set("Authorization", sign);
        headers.set("Content-Type", "application/json;charset=utf-8");
        headers.set("HOST", host);
        log.info(request.getURI().toString());
        return execution.execute(wrapper, body);
    }

}