当从 Header 接收到的 StringUUID 被解析为 Java 中的 UUID 时,为什么会出现 NumberFormatException?
Why does a NumberFormatException occur when a StringUUID received from a Header is parsed to a UUID in Java?
客户端
System.out.println(UUID.fromString("7b11af48-d117-4325-b957-75f9ab87ca4d"));
有效,但是当从 header
接收到 UUID 时
UUID.fromString(response.getHeaders().get("ID").toString());
结果是:
java.lang.NumberFormatException: For input string: "[7b11af48"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.valueOf(Long.java:776)
at java.lang.Long.decode(Long.java:928)
at java.util.UUID.fromString(UUID.java:198)
虽然字符串看起来像一个有效的 UUID:
System.out.println(response.getHeaders().get("archiveID").toString());
结果:
[7b11af48-d117-4325-b957-75f9ab87ca4d]
服务器
@Override
public void doPost( HttpServletRequest request,
HttpServletResponse response ) throws IOException
{
response.setHeader("ID", "7b11af48-d117-4325-b957-75f9ab87ca4d");
}
getHeaders().get(...)
returns一个列表,当你调用toString()
时会显示所有包裹在[
和]
中的内容。
如果您知道 header 将永远存在,您可以使用 getHeaders().get("ID").get(0)
。
客户端
System.out.println(UUID.fromString("7b11af48-d117-4325-b957-75f9ab87ca4d"));
有效,但是当从 header
接收到 UUID 时UUID.fromString(response.getHeaders().get("ID").toString());
结果是:
java.lang.NumberFormatException: For input string: "[7b11af48"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.valueOf(Long.java:776)
at java.lang.Long.decode(Long.java:928)
at java.util.UUID.fromString(UUID.java:198)
虽然字符串看起来像一个有效的 UUID:
System.out.println(response.getHeaders().get("archiveID").toString());
结果:
[7b11af48-d117-4325-b957-75f9ab87ca4d]
服务器
@Override
public void doPost( HttpServletRequest request,
HttpServletResponse response ) throws IOException
{
response.setHeader("ID", "7b11af48-d117-4325-b957-75f9ab87ca4d");
}
getHeaders().get(...)
returns一个列表,当你调用toString()
时会显示所有包裹在[
和]
中的内容。
如果您知道 header 将永远存在,您可以使用 getHeaders().get("ID").get(0)
。