spring rest 请求怎样添加Basic Auth请求頭

请自行揣摩代码

package com.hudai.platform.manager.util;

import java.net.URI;
import java.net.URISyntaxException;

import javax.annotation.Resource;

import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import com.alibaba.fastjson.JSONObject;
import com.hudai.platform.manager.config.BaseEnum;
import com.hudai.platform.manager.model.BaseResponse;

/**
 * @author WanHongLei
 * @version 创建时间:2019年2月19日 下午3:09:13 类说明
 */
@Component
public class RestApi {
    private static final Logger logger = LoggerFactory.getLogger(RestApi.class);

    @Resource
    private RestTemplate restTemplate;
    
    @Value("${xjd.applications.url}")
    private String url;
    
    @Value("${clientCredentials}")
    private String clientCredentials;

    public BaseResponse<JSONObject> proxy(Object obj, String path) {
        URI uri;
        try {
            uri = new URI(url + path);
        } catch (URISyntaxException e) {
            logger.error("URI构建失败", e);
            return new BaseResponse<>(BaseEnum.FAILED.getCode(), BaseEnum.FAILED.getName());
        }

        String base64ClientCredentials = new String(Base64.encodeBase64(clientCredentials.getBytes()));
        
        RequestEntity<Object> requestEntity = RequestEntity.post(uri).header("Authorization", "Basic " + base64ClientCredentials).contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON).body(obj);
        ResponseEntity<JSONObject> responseEntity = restTemplate.exchange(requestEntity, JSONObject.class);
        JSONObject jsonObj = responseEntity.getBody();
        if(responseEntity.getStatusCode() == HttpStatus.OK){
            return new BaseResponse<>(jsonObj);
        }else{
            logger.error("请求失败,errmsg = " + jsonObj.toJSONString());
            return new BaseResponse<>(jsonObj.getIntValue("error"), jsonObj.getString("msg"));
        }
    }
}

 application.properties中添加:clientCredentials=user:password

 

posted @ 2019-02-19 17:49  兔老霸夏  阅读(636)  评论(0编辑  收藏  举报