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;
}

这要如何解决
谢谢!

2个回答

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

hu582205
itget 回复proeny: 换个方法URLDecoder.decode
10 个月之前 回复
proeny
proeny 我转义了,没效果,你用的什么版本的jar包
11 个月之前 回复

导入commons.lang3的jar ,
import org.apache.commons.lang3.StringEscapeUtils;
调用StringEscapeUtils.unescapeHtml4进行反转义,需要转义的为input,result为转义后的字符

String result = StringEscapeUtils.unescapeHtml4(input);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
get方式请求转码
/** 如果是get请求过来的方式,需要对参数进行转码 */ if(ServletActionContext.getRequest().getMethod().equalsIgnoreCase("GET")&&user!=null&&!StringUtils.isEmpty(user.getName())){ String name = new String(user.getName().ge
GET请求参数有URL或特殊符号怎么办?
在发起GET请求的时候有一种情况,那就是参数包含URL参数,如下: http://www.abc123.com?url=http://www.def456.com?id=5&amp;amp;userName=admin GET请求地址中参数url的值为  http://www.def456.com?id=5&amp;amp;userName=admin   这样会造成什么问题? 你的服务器接收到的url参...
Struts2中Get请求转码问题
Tomcat默认编码为ISO859-1 Post提交时,struts2会对其转码为iso8859-1,因此不需要另外转码,而 Get提交表单,则需要单独转码,转码过程如下图:
前端问题get请求参数问题
http://localhost:8088/aa/bb?path=D:\\aa\\aa\\1543488372855.jpg,测试后传路径给后台是不行的,rn是不能识别\\这种字符,用path=D:@@aa@@aa@@1543488372855.jpg是可以接收的,各位有什么办法可以直接传路径的。
http get请求参数问题
string uri = "http://api.189.cn/dm/api/auth/token.json?app_id=aaa&access_token=bbb&timestamp=ccc&sign=ddd";rnrnstring app_id="123456";rn如何把 uri内的参数app_id设置为一个变量,并赋值;
04-11-带有参数的get请求
商城项目是现在主流的分布式电商系统的解决方案,它可以实现高并发,高可用,以及负载均衡的特点被企业所青睐,它是结合了商品后台管理,前台商品展示,登录系统,订单系统,以及搜索和购物车系统与一体,帮助企业提升整体竞争力、工作效率、提高系统的整体的性能,给用户良好的体验。以满足企业不断丰厚的信息化需求和运营管理需求
HTTP通过Get请求传递参数时特殊字符被转码的处理方式
HTTP通过get请求传递参数时特殊字符被转码的处理方式 有时候通过get请求时传递参数难免会有一些特殊字符如:http://XXX?account=guankai&amp;amp;token=D7InZJFVaLwrKg9q6NX3%2Bw%3D%3D,这样的,在后台直接接受时,特殊字符就会被转码。 这时可以用String tok = URLEncoder.encode(token,&quot;utf-8&quot;)...
URL中特殊符号转码
URL中特殊符号转码
字符串转码(包含特殊符号)
一般的中文转码,一般用于转换带有中文的url。 ios9现在好像是用stringByAddingPercentEncodingWithAllowedCharacters替代了stringByAddingPercentEscapesUsingEncoding NSString *strEnd=[str stringByAddingPercentEscapesUsingEncoding:NSUTF8S
Get 请求乱码,前台转码,后台解码
/**后台解码*/ java.net.URLDecoder.decode(&quot;&quot;, &quot;UTF-8&quot; ); /**前台转码*/ encodeURI(encodeURI(abilityKeyWord));
get发放中特殊符号问题
我的item.asp代码是这样的rn[code=VBScript]rnrnrn rn rn rn rnrnrnrnrn rnrn rn rn rn 产品编码:" maxlength="15" size="17">rn rn rn rnrnrnrnrn[/code] rn就是要传递的参数i——表明“产品编码txtItem”中含有字符"%"进行模糊匹配。但是onsubmit后,这个%没有传递过来!我已经用javascript语句对document.MyForm.txtItem.value进行编码了,按理说在刷新页面后用request.querystring("i")则没有这个%了,那里出错误了呢?rn谢谢。
tomcat请求url中带有特殊符号{}|返回400的问题
根据rfc规范,url中不允许有 |,{,}等特殊字符,但在实际生产中还是有些url有可能携带有这些字符,特别是|还是较为常见的。在tomcat升级到7以后,对url字符的检查都变严格了,如果出现这类字符,tomcat将直接返回400状态码。 解决方案: 在tomcat目录/conf/catalina.properties下找到并修改 tomcat.util.http.parser.
get请求参数乱码解决
js 编码var deptname =encodeURI(encodeURI($(‘#deptname’).val())); ;java 解码方法一: String str = new String(this.getRequest().getParameter(“deptname”).getBytes(“iso-8859-1”), “utf-8”);
java的get请求参数乱码
1   方式一:                 String userName = request.getParameter(&quot;userName&quot;); String companyName = request.getParameter(&quot;companyName&quot;); try { companyName = new String(companyName.getBytes(&quot;iso8859-1&quot;)...
tomcat 请求url中带有特殊符号{} | 返回400的问题
在tomcat目录/conf/catalina.properties下找到并修改 tomcat.util.http.parser.HttpParser.requestTargetAllow=|,{,}
omcat 请求url中带有特殊符号{} | 返回400的问题
在tomcat目录/conf/catalina.properties下找到并修改 tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
SpringMVC之GET请求参数中文乱码
只怪自己项目做太少,遇到这些问题纠结太久,浪费时间太多. 在此记录, WEB.XML文件中的编码过滤器设置是针对POST请求的,tomacat对GET和POST请求处理方式是不同的,要处理针对GET请求的编码问题,则需要改tomcat,conf目录下的server.xml配置文件,如下: Connector connectionTimeout="20000" port
GET请求参数处理
若使用Tomcat并采用get提交方式,要取得一个请求参数字符串,则需要通过String的getBytes()指定编码来取得该字符串的字符数组,然后再重新构造为正确编码的字符串。假如浏览器使用utf-8处理字符,web容器默认使用iso-8859-1编码,则正确处理编码方式为:String name=req.getParameter("name"); String name=new String(n
get请求参数转化
请求分页接口参数 { page:1, pageNum:10 } 1、插件方法 import { stringify } from 'qs'; const api_url = `${url}?${stringify(newOptions.params)}` 2、es7方法 // 参数 const params = { page:1, p...
获取get请求参数
从0基础开始,根据我个人在工作中积累的经验,依据企业实战所需技术为目标,详细讲解node.js、express、ejb、mysql及其它相关框架,最后会使用一个小型的实战项目来把所有技术串连起来,让学员掌握的node.js服务器技术在企业工作中能得心应手。
nodejs接收get请求参数
nodejs接收get请求参数 1.1-浏览器向服务器发送get请求参数的两种方式 1.2-服务端使用url模块解析get请求参数 在http协议中,一个完整的url路径如下图通过下图我们可以得知,get请求的参数是直接在url路径中显示。 get的请求参数在path资源路径的后面添加,以?表示参数的开始,以key=value表示参数的键值对,多个参数以&符号分割 hash部分表示的是资源定位符(
postman get 请求参数中文乱码
**问题:**在我们使用postman进行请求的时候,对于get请求带有参数的情况,postman并不会自动帮我们进行编码的转换,因此后台拿到的请求参数是有问题的,为了解决这个问题,需要我们自己手动来进行转码工作。 1.错误请求: 2.对参数进行转码 1.选中需要进行转码的参数,然后点击鼠标右键选中 EncodeURLComponent 3.转码后的效果 ...
get请求参数中文乱码
最近遇到的问题,记录一下,就是get提交中文参数,后台取值是乱码 使用各种方法,前面几种方式虽然没解决问题,但为以后转码提供思路,因此mark下 1.js中使用encodeURI()对请求url编码 2.后台使用URLDecoder指定解码 3.request使用setCharacterEncoding()指定解码 4.使用字符串getByte(“xxx”)获得字节再用new Strin
Retrofit get请求参数
第一种可以用Query() @GET(Url.statisticsApi) Call&amp;lt;ResponseBody&amp;gt; statisticsApi(@Header(&quot;Authorization&quot;) String authorization, @Query(&quot;page&quot;) String page, @Query(&quot;per_page&quot;) String per_page, @Query(&quot;st...
GET请求参数中文乱码的解决办法
POST请求参数中文乱码,一般使用编码拦截器就可以解决,但是GET请求是地址栏传参,这些配置就没办法解决了。而java项目一般部署在tomcat上,第一种方式就是修改tomcat的配置文件,达到中文乱码的问题,如下: &amp;lt;!-- 修改前 --&amp;gt; &amp;lt;Connector port=&quot;9090&quot; protocol=&quot;HTTP/1.1&quot; connectionTimeout=&quot;20000&quot; ...
get和post的区别
根据网上的一些回答,记录如下: GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。GET书签可收藏,POST为书签不可收藏。GET能被缓存,POST不能缓存 。GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form...
FLASK 获取GET请求参数
按正常来说以下代码,可正确获取get请求中的参数 from flask import request .... arg = request.args.get("&lt;your-arg&gt;") .... 在后续编程序需要实现如下功能: * 获取get请求中的disable参数 * 指定disable的默认值为True * 指定disable的类型必须为布尔型 dis...
get请求带有中文参数乱码问题解决方案
get请求带有中午参数解决方案 原因:中文参数前台传过去是utf-8编码,拿到之后不是按utf-8解码,默认是按iso8859-1解码。 就到导致了乱码问题 解决方案有两种: 一、拿到iso8859-1的字节码,组成utf-8的文字 key = new String(key.getBytes(&quot;iso8859-1&quot;), &quot;utf-8&quot;);   二、 推荐的方法:在前端写自定义标签...
关于get请求参数的小问题
一般情况下NSDictionary *dict =@{ @"name" : @"zhangsan", @"password" : @"123" }这是我们通过get请求传入参数字典后自动拼接而成的url http://www.it315.org/counter.jsp?name=zhang
get请求参数 转 json字符串
&arg[is_show]=1&arg[customer_cid]=91 转“arg”:"is_show":1,"customer_cid":91,.....
form get请求参数丢失
post请求和get请求的区别 上边的这个案列,当使用get请求提交到后台的时候,后台的参数userid无法获取,因为get请求修改了url请求的地址。 你理解的肯定是这样 locahost:8080/login?userid=111&amp;&amp;username='丽华'&amp;&amp;password='1234',但是当使用get请求的时候 它的url是这样的locaho...
node接收get请求参数与post请求参数
如果是get请求,可以通过: req.query //接收前端发送的get请求参数,req.query只能拿到get请求参数 如果是post请求,可以通过express中间件(express本身没有内置获取表单请求体的api): 下载middleware(中间件)中的body-parser(语法分析器)— post请求语法分析器 cnpm install body-parser -S 引包 ...
有关URL传参的特殊符号转码
对于如下的URL传参,能够被服务器request接收的参数值可能会丢失后面的部分(&amp;amp;符号及后面的'test'):   http://192.168.2.108:8080/MealOrder/LoginServlet?userAccount=Test&amp;amp;userPwd=20&amp;amp;test     如何解决呢?使用UTF-8编码即可,推荐如下的一个百度网页转码小应用(选...
请求参数问题关于post请求
请求参数中多个参数用&链接但是多个&链接是什么![图片说明](https://img-ask.csdn.net/upload/201806/03/1528024122_299620.png)求大神啊 急啊rn
【求助】C#模拟http的get请求,转码问题
问题描述:rn1、使用C#模拟http以get方式提交rn2、提交内容为:您昨天2019-03-19考勤有未打卡情况!下午未打卡。[OA平台]rn3、使用工具进行转码:HttpUtility.UrlEncode(content, System.Text.Encoding.UTF8);rn4、使用WebClinet、HttpClient、HttpWebRequest等工具模拟http提交rn5、提交时,提交内容中“[OA平台]”的英文中括号未能正常转码rn6、确认第3步中,使用工具进行转码时,英文中括号是转了码的,但是提交后英文中括号又变回来了rnrn转码后内容:%e6%82%a8%e6%98%a8%e5%a4%a92019-03-19%e8%80%83%e5%8b%a4%e6%9c%89%e6%9c%aa%e6%89%93%e5%8d%a1%e6%83%85%e5%86%b5!%e4%b8%8b%e5%8d%88%e6%9c%aa%e6%89%93%e5%8d%a1%e3%80%82%5bOA%e5%b9%b3%e5%8f%b0%5drn提交时内容:%e6%82%a8%e6%98%a8%e5%a4%a92019-03-19%e8%80%83%e5%8b%a4%e6%9c%89%e6%9c%aa%e6%89%93%e5%8d%a1%e6%83%85%e5%86%b5!%e4%b8%8b%e5%8d%88%e6%9c%aa%e6%89%93%e5%8d%a1%e3%80%82[OA%e5%b9%b3%e5%8f%b0]rn
IE兼容 请求参数中文乱码或请求无效 转义与转码
要解决发送请求包含中文参数,且还要兼容IE浏览器,需要针对不同场景采用对应的方法来处理 概括为以下2种场景: 应用场景一:a标签href请求 <% String str1 = "参数1"; //中文 String str2 = "参数2"; //中文 %> 点我跳转到Controller的function1方法 点我跳转到YourPage目录下的page1.jsp页面 以上情
网络:GET 登录和转码
#import "ViewController.h"@interface ViewController () @property (nonatomic, copy) NSString *username;//用户名 @property (nonatomic, copy) NSString *password;// 密码 @end@implementation ViewController- (voi
get方法请求参数带有+号的情况
问题: get方法请求参数带有+号的情况 这种情况下,PHP的$_GET或者$_REQUEST获得的参数把加号替换成了空格 解决方法: 在js端把参数用urlencode即可 举例: encodeURIComponent('A+B') //这样做以后,就可以保证获得正确的参数 举一反三: 其他包换特殊符号的情况也适用
GET请求的问题
CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址rn DWORD dwContext = 1, //上下文IDrn DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //标记rn LPCTSTR pstrHeaders = NULL, //发送到服务器的数据头rn DWORD dwHeadersLength = 0 );//发送到服务器的数据头长度rnrnCString getURLContext(LPCTSTR pstrURL)rnrn //自定义http头信息rn char* headers="Accept:*/*\r\n"rn "Accept-Language:zh-cn\r\n"rn "User-Agent:VCTestClient\r\n";rnrn CString m_strHTML;rn CInternetSession sess;//建立会话rn CHttpFile* pF=(CHttpFile*)sess.OpenURL(pstrURL,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));//打开文件rn CString szData,szAllData;rn while(pF->ReadString(szData))rn rn //读取文件rn szAllData+="\r\n";rn szAllData+=szData;rn rn pF->Close();rn sess.Close();rn m_strHTML=szAllData;rn return m_strHTML;rnrnrn这代码是上网找的。rn第一次能成功。第二次就不行了。谁有好的GET请求的代码。能发下给我吗?谢谢。。
php get请求问题。
[align=center][b]需求:php中写代码实现用户访问此php静默提交一个get请求。[/b][size=16px][/size][/align]
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数