当从 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)