【发布时间】:2015-08-03 03:46:15
【问题描述】:
我已经构建了一个 Spring Restful WebService,然后我创建了一个动态 url。这是我的代码:
@RequestMapping(value = "/dynamicurl/{sp}/**", method = RequestMethod.GET,headers="Accept=application/json")
public Map<String, String> insertsoheaderdinamis(@PathVariable("sp") String sp, HttpServletRequest request) throws ParseException {
String restOfTheUrl = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
String split[] = restOfTheUrl.split("/");
String strParam="EXEC "+ split[4] + " '";
for (int a=5;a<split.length;a++)
{
strParam=strParam+split[a]+"','";
/*System.out.println(split[a]); */
}
strParam=strParam.substring(0, strParam.length()-2);
Map<String,String> result = new HashMap<String,String>();
try {
userService.dynamicurl(strParam);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
result.put("message", "Some notif");
}
return result;
}
当我尝试提交一个没有“特殊字符”的网址时,它完全没问题。但是,当我必须发送带有“特殊字符”的某个值的 url 时,它会给我错误,尤其是当我发送“/”(SLASH)时。在我的代码中,我尝试将 SLASH 转换为 "," (coma) 以使其成为我想要的字符串。这是我的网址示例:
编码版本:
http://localhost:8080/SpringServiceJsonSample/service/updatepool/dynamicurl/WEB_SP_InsertPool/TRX_SOHEADER/''OPJ1401577''%2cCAST(''2014-09-06+09%3a30%3a29''+as+DATETIME)%2c''JKT-PAR''%2c''JKTB009'' %2c''NNNN''%2c''紧急/紧急''%2cCAST(''2014-09-06+09%3a30%3a29''+as+DATETIME)%2c''PARWIS''%2cNULL%2cCAST (''2014-09-13+09%3a30%3a29''+as+DATETIME)%2c''SHIMIZU''%2cNULL%2cNULL%2cNULL
解码版本:
http://10.1.48.243:8080/SpringServiceJsonSample/service/updatepool/dynamicurl/WEB_SP_InsertPool/TRX_SOHEADER/''OPJ1401577'',CAST(''2014-09-06 09:30:29'' DATETIME),''JKT-PAR'',''JKTB009'',''NNNN'',''urgent/nourgent'',CAST(''2014-09-06 09:30:29'' as DATETIME),''PARWIS'',NULL,CAST(''2014-09-13 09:30:29'' as DATETIME),''清水'',NULL,NULL,NULL
在这句“紧急/紧急”中,它具有“/”(斜线)值。我试图将“/”(斜杠)编码为“%2F”,然后我必须在我的 url 中替换它,它甚至不进入我的 web 服务,就像它没有在我的 web 浏览器中执行一样,没有任何反应,如果我用“/”(斜杠)提交我的网址,它将被转换为“,”(逗号)。如何使用特殊字符解决此问题?
【问题讨论】:
-
它将 / 作为 url 参数。我曾经遇到过同样的问题。你要做的就是用管道替换所有的 / 然后试一试。它肯定会奏效。美好的一天
标签: java spring web-services rest