如何正确地向Spring Restful WebService提交特殊字符?

时间:2015-08-03 03:46:15

标签: java spring web-services rest

我已经构建了一个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;

}

当我尝试提交没有&#34;特殊字符&#34;的网址时它完全没问题。但是,当我必须发送一个具有一定价值的网址&#34; SPECIAL CHARATER&#34;它给了我错误,特别是当我发送&#34; /&#34; (削减)。在我的代码中,我试图将SLASH转换为&#34;,&#34; (昏迷)使它成为我想要的字符串。这是我的URL示例:

编码版本:

  

http://localhost:8080/SpringServiceJsonSample/service/updatepool/dynamicurl/WEB_SP_InsertPool/TRX_SOHEADER/&#39;&#39; OPJ1401577&#39;&#39;%2cCAST(&#39;&#39; 2014年9月6日+ 09%3a30%3a29&#39;& #39; +为+ DATETIME)%2C&#39;&#39; JKT-PAR&#39;&#39;%2C&#39;&#39; JKTB009&#39;&#39;%2C&#39;& #39; NNNN&#39;&#39;%2C&#39;&#39;紧急/ noturgent&#39;&#39;%2cCAST(&#39;&#39; 2014年9月6日+ 09%3a30 %3a29&#39;&#39 + AS + DATETIME)%2C&#39;&#39; PARWIS&#39;&#39;%2cNULL%2cCAST(&#39;&#39; 2014年9月13日+ 09%3a30%3a29&#39;&#39 + AS + DATETIME)%2C&#39;&#39; SHIMIZU&#39;&#39;%2cNULL%2cNULL%2cNULL

解码版本:

  

http://10.1.48.243:8080/SpringServiceJsonSample/service/updatepool/dynamicurl/WEB_SP_InsertPool/TRX_SOHEADER/&#39;&#39; OPJ1401577&#39;&#39;,CAST(&#39;&#39; 2014年9月6日   09:30:29&#39;&#39;如   DATETIME),&#39;&#39; JKT-PAR&#39;&#39;&#39;&#39; JKTB009&#39;&#39;&#39;&#39; NNNN&#39 ;&#39;,&#39;&#39;紧急/ nourgent&#39;&#39;&#39;&#39;&#39;&#39; 2014-09-06 09:30:29&#39;&# 39;作为   DATETIME),&#39; PARWIS&#39;&#39;,NULL,CAST(&#39;&#39; 2014-09-13 09:30:29&#39;&#39; as   DATETIME),&#39;&#39; SHIMIZU&#39;&#39;,NULL,NULL,NULL

在这句话中&#34;紧急/非正常&#34;它有&#34; /&#34;(斜杠)值。我试图编码&#34; /&#34; (斜线)是&#34;%2F&#34;然后我必须在我的网址中替换它,它甚至不能进入我的网络服务,就像它没有在我的网络浏览器中执行,没有任何反应,如果我提交我的网址&#34; /&#34; (斜杠),它将被转换为&#34;,&#34; (昏迷)。我如何用Special Character解决这个问题?