【问题标题】:Failed to convert value of type 'java.lang.String' to required type 'java.util.Date' when sending GET request发送 GET 请求时无法将类型“java.lang.String”的值转换为所需类型“java.util.Date”
【发布时间】:2019-12-30 10:05:33
【问题描述】:

我的Controller里有这个方法(这是Kotlin的方法,不过我想你可以理解):

open fun getAis(
        @RequestParam("beginPeriodDate") @DateTimeFormat(pattern = "yyyy-MM-dd") beginPeriodDate: Date,
        @RequestParam("request") request: Boolean,
        @RequestParam("requestNumber") requestNumber: String,
        @RequestParam("sender") sender: String
): Data =
        service.get(beginPeriodDate, request, requestNumber, sender)

我正在尝试通过浏览器访问它。我发送这个:http://localhost:8097/shep/sync/ais?beginPeriodDate=2019-08-25?request=false?requestNumber=272710100307142417?sender=2727851024302531

得到这个:

Failed to convert value of type 'java.lang.String' to required type 
'java.util.Date'; nested exception is 
 org.springframework.core.convert.ConversionFailedException: Failed to 
 convert from type [java.lang.String] to type 
[@org.springframework.web.bind.annotation.RequestParam 
@org.springframework.format.annotation.DateTimeFormat java.util.Date] for 
value '2019-08-25?request=false?requestNumber='2710100307142417'? 
sender='27851024302531''; nested exception is 
 java.lang.IllegalArgumentException: Invalid format: "2019-08-25? 
request=false?requestNumber='27..." is malformed at "?request=false? 
requestNumber='27..."

【问题讨论】:

  • 将所有? 替换为&,只保留第一个?。基本上你用于测试的 URL 是错误的。
  • @M.Deinum 是的,它有效,谢谢。为什么是错的?因为/shep/sync/ais 部分?
  • ? 在 URL 中表示参数的开始。 & 用于分隔参数。
  • 是的 @M.Deinum 是对的,你的 URL 必须看起来像 http://localhost:8097/shep/sync/ais?beginPeriodDate=2019-08-25&request=false&requestNumber=272710100307142417&sender=2727851024302531

标签: java spring kotlin date-formatting get-request


【解决方案1】:

您的请求 URI 格式似乎不正确 & 分隔参数,而不是 ?。换句话说,你需要的是

?beginPeriodDate=2019-08-25&request=false&requestNumber='2710100307142417'&sender='27851024302531' 

另外,如果没有特别的理由这样做,我会在 requestNumber 和 sender 值周围去掉单引号,这会使它看起来像这样

?beginPeriodDate=2019-08-25&request=false&requestNumber=2710100307142417&sender=27851024302531

【讨论】:

    猜你喜欢
    • 2017-01-28
    • 2019-08-23
    • 2018-08-21
    • 2014-07-05
    • 2020-07-23
    • 1970-01-01
    • 2017-05-06
    • 2015-03-29
    • 2021-06-26
    相关资源
    最近更新 更多