【问题标题】:How to properly submit special character to Spring Restful WebService?如何正确向 Spring Restful WebService 提交特殊字符?
【发布时间】: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


【解决方案1】:

【讨论】:

  • 是的,这就是我所做的,然后我调用了那个 url,什么也没发生,它不会执行我的 web 服务,它也不会给我错误。. 没有失败的 web 请求或其他错误我的调试模式。还有其他解决方案吗?
猜你喜欢
  • 2017-06-14
  • 1970-01-01
  • 2018-10-10
  • 2023-04-05
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多