我不确定我是否错过了一些真正基本的东西,但这就是我想做的。
我想对以下地址进行rest API调用:
https://localhost:8080/fetchlocation?lat=-26.2041028&lng=28.0473051&radius=500
我的休息方法是:
public void fetchlocation(@RequestParam Long lat, @RequestParam Long lng, @RequestParam int radius){ //fetches location}
我得到这个错误:
“时间戳”:1442751996949,“状态”:400,“错误”:“错误请求”,“异常”:“org.springframework.beans.TypeMismatchException”,
“留言”:“无法将类型”java.lang.String“的值转换为所需类型”java.lang. Long“;嵌套异常为java.lang. NumberError异常:对于输入字符串:"-26.2041028"",
“path”:“/fetchlocation”
我猜这是因为当我进行GET调用时,rest API接收的坐标是String而不是Long。我如何确保在进行调用时,rest API获得的是Long而不是String值?
当我将其余的API方法改为使用String作为参数时,我可以很容易地使该方法工作,但对于类型检查,我更喜欢使用Long。
public void fetchlocation(@RequestParam String lat, @RequestParam String lng, @RequestParam String radius){ //fetches location}
3条答案
按热度按时间qhhrdooz1#
您尝试转换为
java.lang.Long
的数字是-26.2041028
。您的数字包含
.
(十进制)。这不允许用于Long
s。您需要使用java.lang.Double
。对于静态初始化,也可以用
L
代替Long
,或者用D
代替Double
。尽管这不是必需的,但它使代码更具可读性。比如
-26.2041028D
换Double
iklwldmw2#
看起来你可能正在使用GET请求而不是POST请求。
zwghvu4y3#
您需要确保要转换为Long的String只包含 * 数字。这意味着例如像这样的字符串,**“10d”**不能转换为Long,因此出现异常。