获取header中的token串&&http的patch方式发送请求

20 篇文章 1 订阅

一  java后端获取token串

使用java代码获取前端发来的请求header中的token串,

1.1 模拟登陆,获取token

地址:http://10.130.7.118:81/cas/jwt/login

方式:post

header:content-type:application/x-www-form-urlencoded

 请求参数:

 1.2 请求上下线的接口地址

请求地址中:header设置token,进行请求

 1.3  请求自定义的程序,获取header的token

后端代码:

 打印的日志:

 二 java后端模拟http的pacth的方式进行请求

方式一: 使用URL类的方式请求,使用patch,返回包405错误,不支持patch方式吧

 方式二:使用httpclient方式: 能够获取到header的信息,状态码,获取返回的数据,通过httpEntity也无法获取数据,但是通过     result=EntityUtils.toString(entity,"UTF-8");解析后就能返回数据;但是感觉查询耗时比较长。

 

 postman返回结果

 httpclient的依赖

完整代码:

package com.ljf.spring.boot.demo.controller;

import com.ljf.spring.boot.demo.common.ResponseResult;
import com.ljf.spring.boot.demo.model.ProductTotalVo;
import com.ljf.spring.boot.demo.model.Test;
import org.apache.commons.codec.CharEncoding;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPatch;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @ClassName: GetTokenController
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/12/05 17:26:35 
 * @Version: V1.0
 **/
@RestController
@RequestMapping("/dispatch-task")
public class GetTokenController {
 // String token="eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ0Z3QiOiJUR1QtMTkzLWVZYk55RFVzYXJLTzZrWG5oVHBmLUEzeWpGT3pnNGktNHpiZ2V3Nm9sbXFwUkI2bzNCY3lvZVJJZkxtbmsxamRzZGNjYXMiLCJkdXJhdGlvbiI6IjcyMDAiLCJhdWQiOiJhbGwiLCJzdWIiOiJib25jIiwiaXNzIjoiY2xvdWRpaXAiLCJleHAiOjE2Mzg3MDMxMDUsInVzZXJuYW1lIjoiYWRtaW4ifQ.oX_oXsGnG2_PvUqDiWePsx-h_hdi7lW83upQ-Tz4goN0GNDFwM_L0jgs3v0Ty9KglK4RJtVdd1SoBVvWArk_nlyiBcJrNu3YO10hvKl0L_DUNlD4xYJdybb-GZ7_hovWtv85daJwoBysMpe71vFbLj2tmvqZMamI9mh7yl6UWoFEqhAPr76RCCrD1moIpxD5XUv8PSAJ26EfelT3PN7vWl_kkH9mnsiepD79_xvLXwCxDjxzNoUy8LzxzSeU75L84l9q5E8m4tfa12UvhoXZxZ1eJ7FXiaDe2sTh9up4J0cXzze0qspln7Gar5rUigAPyiuE_30nFwD5siNz6X2Vgw";
    @RequestMapping("/info")
    public ResponseResult productInfoTotal(HttpServletRequest request) throws Exception {
        System.out.println("======进入controller,下发任务");
        String token=request.getHeader("Authorization");
        System.out.println("获取token为:"+token);
        String httpURL="http://10.130.7.118:81/cloudiip-access/prod/event/alarm/NbQugyvX_1635410805796_2?disableFlag=0";
       //String str= sendHttpRequest(httpURL,token);
            HttpClient httpClient = HttpClientBuilder.create().build();
           HttpPatch patch= new HttpPatch(httpURL);
           patch.setHeader("Authorization",token);
           HttpResponse response = httpClient.execute(patch);
           int  statusCode = response.getStatusLine().getStatusCode();
            HttpEntity entity = response.getEntity();
           System.out.println("entity:"+entity);
           String result="";
        // 解析数据封装HttpResult
        if (response.getEntity() != null) {
            result=EntityUtils.toString(entity,"UTF-8");
            //httpResult = new HttpResult(response.getStatusLine().getStatusCode(),EntityUtils.toString(response.getEntity(),"UTF-8"));
           // httpResult.setCode(response.getStatusLine().getStatusCode());
            //httpResult.setBody(EntityUtils.toString(response.getEntity(),"UTF-8"));

        }
           return ResponseResult.ok(statusCode+" 获取成功:"+result);
    }
    public  String sendHttpRequest(String httpURL,String token) throws Exception {
        //1. 定义需要访问的地址 "https://way.jd.com/he/freeweather"
        URL url = new URL(httpURL);
        //2. 开启连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //3. 设置请求的方式
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setRequestProperty("Accept", "application/json");
        connection.setRequestProperty("X-HTTP-Method-Override", "PATCH");
        connection.setRequestProperty("Authorization",token);
        //4. 输出参数
        connection.setDoOutput(true);
        //7. 发起请求
        connection.connect();
        //8. 接收对方响应的信息,可以使用Spring的 StreamUtils 工具类
        String response = StreamUtils.copyToString(connection.getInputStream(), Charset.forName("UTF-8"));

        System.out.println(connection.getResponseCode());

        System.out.println(connection.getResponseMessage());
        return response;
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值