找了一堆,发现还是这个靠谱

package com.qishiyun.poplar.qlib.util;

import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.qishiyun.poplar.qlib.constant.ErrorCodeEnum; import com.qishiyun.poplar.qlib.exception.QlibException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate;

@Component @Slf4j @RefreshScope public class OssUtil {

<span class="token annotation punctuation">@Autowired</span>
<span class="token keyword">private</span> RestTemplate restTemplate<span class="token punctuation">;</span>

<span class="token annotation punctuation">@Value</span><span class="token punctuation">(</span><span class="token string">"${newOss.baseUrl}"</span><span class="token punctuation">)</span>
<span class="token keyword">private</span> String baseUrl<span class="token punctuation">;</span>

<span class="token annotation punctuation">@Value</span><span class="token punctuation">(</span><span class="token string">"${newOss.stsUrl}"</span><span class="token punctuation">)</span>
<span class="token keyword">private</span> String stsUrl<span class="token punctuation">;</span>

<span class="token annotation punctuation">@Value</span><span class="token punctuation">(</span><span class="token string">"${newOss.appId}"</span><span class="token punctuation">)</span>
<span class="token keyword">private</span> String appId<span class="token punctuation">;</span>



<span class="token keyword">public</span> String <span class="token function">getOssTmpUrl</span><span class="token punctuation">(</span>String ossUrl<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>

    RestTemplate restTemplate <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">RestTemplate</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    HttpHeaders headers <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HttpHeaders</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    MediaType type <span class="token operator">=</span> MediaType<span class="token punctuation">.</span><span class="token function">parseMediaType</span><span class="token punctuation">(</span><span class="token string">"application/json; charset=UTF-8"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    headers<span class="token punctuation">.</span><span class="token function">setContentType</span><span class="token punctuation">(</span>type<span class="token punctuation">)</span><span class="token punctuation">;</span>
    headers<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">"Accept"</span><span class="token punctuation">,</span> MediaType<span class="token punctuation">.</span>APPLICATION_JSON<span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

    JSONObject param <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">JSONObject</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    param<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"ossUrl"</span><span class="token punctuation">,</span> ossUrl<span class="token punctuation">)</span><span class="token punctuation">;</span>
    param<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"appId"</span><span class="token punctuation">,</span>appId<span class="token punctuation">)</span><span class="token punctuation">;</span>
    param<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"expirationTime"</span><span class="token punctuation">,</span><span class="token string">"1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    HttpEntity<span class="token generics function"><span class="token punctuation">&lt;</span>String<span class="token punctuation">&gt;</span></span> formEntity <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HttpEntity</span><span class="token generics function"><span class="token punctuation">&lt;</span>String<span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span>JSONUtil<span class="token punctuation">.</span><span class="token function">toJsonStr</span><span class="token punctuation">(</span>param<span class="token punctuation">)</span><span class="token punctuation">,</span> headers<span class="token punctuation">)</span><span class="token punctuation">;</span>


    String result <span class="token operator">=</span> restTemplate<span class="token punctuation">.</span><span class="token function">postForObject</span><span class="token punctuation">(</span>baseUrl <span class="token operator">+</span> stsUrl<span class="token punctuation">,</span> formEntity<span class="token punctuation">,</span> String<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    JSONObject resultJsonObject <span class="token operator">=</span> JSONObject<span class="token punctuation">.</span><span class="token function">parseObject</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token keyword">if</span> <span class="token punctuation">(</span>resultJsonObject<span class="token punctuation">.</span><span class="token function">getInteger</span><span class="token punctuation">(</span><span class="token string">"code"</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">200</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>
        JSONObject resultData <span class="token operator">=</span> resultJsonObject<span class="token punctuation">.</span><span class="token function">getJSONObject</span><span class="token punctuation">(</span><span class="token string">"data"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        String resultUrl <span class="token operator">=</span> resultData<span class="token punctuation">.</span><span class="token function">getString</span><span class="token punctuation">(</span><span class="token string">"ossSTSUrl"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">return</span> resultUrl<span class="token punctuation">;</span>
    <span class="token punctuation">}</span><span class="token keyword">else</span> <span class="token punctuation">{<!-- --></span>
        log<span class="token punctuation">.</span><span class="token function">error</span><span class="token punctuation">(</span><span class="token string">"调用服务异常:{}"</span><span class="token punctuation">,</span>JSONUtil<span class="token punctuation">.</span><span class="token function">toJsonStr</span><span class="token punctuation">(</span>resultJsonObject<span class="token punctuation">.</span><span class="token function">toJSONString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">QlibException</span><span class="token punctuation">(</span>ErrorCodeEnum<span class="token punctuation">.</span>FAIL_GET_TMP_OSS_URL<span class="token punctuation">.</span><span class="token function">code</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> ErrorCodeEnum<span class="token punctuation">.</span>FAIL_GET_TMP_OSS_URL<span class="token punctuation">.</span><span class="token function">msg</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

<span class="token punctuation">}</span>

}