proeny 2018-11-05 07:30 采纳率: 0%
浏览 6834

GET请求,请求参数带有特殊符号被转码的问题。

情况是这样的,我要去请求第三方项目的接口获取资源csv文件,

接口地址为: http://127.0.0.1:8080/getDate/?username=admin/password=123456/startTime=2018-11-4_16:00:00/endTime=2018-11-5_16:30:00/res=min/filter={me=127.0.0.1-0}/DT=csv

通过浏览器直接输入该地址可以正常获取csv文件,
但是我通过java RestTemplate 请求改地址时,/password 后面的参数的特殊符号就被转码了,然后就请求不到了,

变成这样:
[org.springframework.web.client.RestTemplate] - GET request for "http://127.0.0.1:8080/getDate/?username=admin/password%3D123456/startTime%3D2018-11-05_14:52:08/endTime%3D2018-11-05_14:55:08/res%3Dmin/filter%3D%7Bme%3D127.0.0.1-0%7D/DT%3Dcsv" resulted in 200 (200)

源码:

@RequestMapping(value = "query3.html")
@ResponseBody
public static String query3() {
    RestTemplate restTemplate = new RestTemplate();
    String result  = "";

    Date date = new Date();
    long time = 30*60*100;  //30min
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
    String startTime = df.format(new Date(date.getTime() - time));
    String endTime = df.format(new Date(date.getTime()));
    String username = "admin";
    String password = "123456";
    String res= "min";
    String filter = "{me=127.0.0.1-0}";
    String DT = "csv";

    Map<String,String> queryMap = new HashMap<>();
    queryMap.put("username",username);
    queryMap.put("password",password);
    queryMap.put("startTime",startTime);
    queryMap.put("endTime",endTime);
    queryMap.put("res",res);
    queryMap.put("filter",filter);
    queryMap.put("DT",DT);

    String dataUrl = "http://127.0.0.1:8080/getDate/";
    String queryMapUrl = "?username={username}/password={password}/startTime={startTime}/endTime={endTime}/res={res}/filter={filter}/DT={DT}";

    try {
        result = restTemplate.getForObject(dataUrl+queryMapUrl,String.class,queryMap);
    }catch (Exception e){
        e.printStackTrace();
    }
    return  result;
}

这要如何解决
谢谢!

  • 写回答

3条回答 默认 最新

  • 胡易卿 2018-11-05 08:21
    关注

    调用URLDecoder.decode(a)进行反转义,需要转义的为input,result为转义后的字符
    String result = URLDecoder.decode(input);

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题