get/post远程调用 携带token

post方式的带token请求
 HttpHeaders headers = new HttpHeaders();
 headers.add("token","1234");
ResponseEntity<String> response = restTemplate.postForEntity(Url,new HttpEntity<Map>(data,headers),String.class);
取值:JSONObject jsonObject = JSONUtil.parseObj(response.getBody());

get方式的带token请求 
HttpHeaders headers = new HttpHeaders();
headers.add("token","1234");
ResponseEntity<String> response = restTemplate.exchange(Url,HttpMethod.GET,new HttpEntity<Map>(data,headers),String.class);

取值:JSONObject jsonObject = JSONUtil.parseObj(response.getBody());

常用的请求方法 
restTemplate.getForObject(url,响应类型,参数);//参数可直接拼入url
restTemplate.getForEntity(url,响应类型,参数);//参数可直接拼入url
restTemplate.postForObject(yhTokenUrl,参数,响应类型);//参数可以是实体类或集合等,响应类型一般为String,然后使用JSON工具进行格式转换
 自动注入restTemplate失败,如何解决
1、创建一个commonbean文件,将一下代码复制进入

import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
 
@Configuration
public class commonbean {
    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
        return builder.build();
    }
}
2、在需要发起http请求的文件中自动注入即可

@Autowired
RestTemplate restTemplate;
 

/**
 * 判断供应商可被查看次数是否足够
 *
 *    @return
 *   结果
 *   1 :供应商可被查看
 *   0 ;供应商每年可被查看次数已达到上限;
 *
 */
@PostMapping("getProviderViewStatus")
public JSONObject getProviderViewStatus(@RequestBody ProviderSearchForm providerSearchForm){
    HttpHeaders headers = new HttpHeaders();
    if (StringUtils.isNotEmpty(providerSearchForm.getToken())){
        headers.add("token",providerSearchForm.getToken());
    }

    String url ="";

    if (providerSearchForm.getSource() == 1){
        url = ksDataUrl+"/collect/provider/getProviderViewStatus/";
    }

    if (providerSearchForm.getSource() == 2){
        url = zzDataUrl+"/collect/provider/getProviderViewStatus/";
    }
    if (providerSearchForm.getSource() == 3){
        url = kkDataUrl+"/collect/provider/getProviderViewStatus/";
    }


    ResponseEntity<String> response = restTemplate.exchange(url+providerSearchForm.getId(), HttpMethod.GET,new HttpEntity<Map>(null,headers),String.class);
    JSONObject jsonObject = JSONObject.parseObject(response.getBody());
    return jsonObject;
}

/**@Description: 取消关注、收藏接口
 * @param focusOnCollection
 * @author jpt
 * @date 2023/2/22 15:57
 */
@PostMapping("focus/collection/cancel")
public JSONObject focusEnterpriseCancel(@Validated @RequestBody FocusOnCollection focusOnCollection){

    HttpHeaders headers = new HttpHeaders();
    if (StringUtils.isNotEmpty(focusOnCollection.getToken())){
        headers.add("token",focusOnCollection.getToken());
    }
    Map map = JSONObject.parseObject(JSONObject.toJSONString(focusOnCollection), Map.class);
    String url ="";

    if (focusOnCollection.getSource() == 1){
        url = ksDataUrl+"/collect/focusOnCollection/focus/collection/cancel";
    }
    if (focusOnCollection.getSource() == 2){
        url = zzDataUrl+"/collect/focusOnCollection/focus/collection/cancel";
    }
    if (focusOnCollection.getSource() == 3){
        url = kkDataUrl+"/collect/focusOnCollection/focus/collection/cancel";
    }

    ResponseEntity<String> response = restTemplate.postForEntity(url,new HttpEntity<Map>(map,headers),String.class);
    JSONObject jsonObject = JSONObject.parseObject(response.getBody());
    return jsonObject;

}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用 Java 的 HttpUrlConnection 类来发送 POST 请求,然后从响应中获取 token。接着,可以使用该 token 发送 GET 请求,获取其他数据。以下是示例代码: ``` import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Base64; public class Main { public static void main(String[] args) throws Exception { // 发送 POST 请求,获取 token String token = getToken(); // 使用 token 发送 GET 请求,获取其他数据 String data = getData(token); System.out.println(data); } private static String getToken() throws Exception { String url = "https://example.com/token"; String username = "username"; String password = "password"; // 构造 POST 请求 URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Authorization", "Basic " + getAuthHeader(username, password)); con.setDoOutput(true); // 发送 POST 请求 String postParams = "grant_type=client_credentials"; con.getOutputStream().write(postParams.getBytes("UTF-8")); // 读取响应 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 解析响应,获取 token String token = response.toString().split("\"")[3]; return token; } private static String getData(String token) throws Exception { String url = "https://example.com/data"; // 构造 GET 请求 URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("GET"); con.setRequestProperty("Authorization", "Bearer " + token); // 发送 GET 请求 int responseCode = con.getResponseCode(); // 读取响应 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 返回响应 return response.toString(); } private static String getAuthHeader(String username, String password) { String auth = username + ":" + password; byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes()); return new String(encodedAuth); } } ``` 其中,`getToken()` 方法发送 POST 请求,获取 token;`getData()` 方法使用 token 发送 GET 请求,获取数据。`getAuthHeader()` 方法用于构造 Authorization 头部,包含用户名和密码。注意,这里使用了 Base64 编码,因此需要导入 `java.util.Base64` 包。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呐喊2954

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值