将 HttpHeaders 转换为 Map

Posted

技术标签:

【中文标题】将 HttpHeaders 转换为 Map【英文标题】:convert HttpHeader to Map 【发布时间】:2015-08-06 13:41:20 【问题描述】:

在浏览器上使用 dart(没有 dart:io)时,是否有一种现成的方法,可以将 req.getAllResponseHeaders() 返回的字符串(其中 req 是 HttpRequest)转换为 dart Map。我有点惊讶这里没有现成的方法,因为所有与 http 相关的函数似乎都使用 Map 格式的标头。

此外,如果真的没有现成的方法,您将如何转换由.getAllResponseHeaders() 返回的标头?

date: Mon, 25 May 2015 06:03:29 GMT
x-content-type-options: nosniff
server: dart:io with Shelf
authorization: ShelfAuthJwtSession eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MzI1MzM4MDgsImV4cCI6MTQzMjUzNTYwOCwiaXNzIjoic3VwZXIgYXBwIiwic3ViIjoiZnJlZCIsImF1ZCI6W251bGxdLCJzaWQiOiJjM2E0Y2IzMC1lY2EwLTExZTQtZmNiYS0xM2YwNjgwYTQxMDQiLCJ0c2UiOjE0MzI2MjAyMDh9.AB0TCJPcioCtBA-qzO1QSLuH7HUxHCbDZTUVANp5Dbo
x-frame-options: SAMEORIGIN
access-control-allow-methods: GET, POST, OPTIONS
content-type: text/plain; charset=utf-8
access-control-allow-origin: *
access-control-expose-headers: Authorization
access-control-allow-credentials: true
transfer-encoding: chunked
x-xss-protection: 1; mode=block

进入地图。

【问题讨论】:

我开始认为最好的方法是创建一个匹配所有键和一个匹配所有值的正则表达式。然后从两个列表中创建地图。 这个正则表达式采用键 /.+?(?=\: )/g 不包括“:”由于某种原因同样的事情不适用于值 /(?=\: ).*/g 有人知道为什么吗? 此方法标记为unstable,因此您可能不应该依赖它。 【参考方案1】:

response.getHeaders().toSingleValueMap();

【讨论】:

【参考方案2】:

getAllResponseHeaders() 方法不稳定,因此您不应该依赖它/不应该使用它。

如果您需要 Map 格式,您可以使用来自 HttpRequestresponseHeaders getter。

【讨论】:

以上是关于将 HttpHeaders 转换为 Map的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenJson 将 JSON 列标题转换为小写

如何在角度5 [重复]中将标题设置为HttpHeaders

httpHeaders

Alamofire 和 api 密钥有问题

Spring HttpHeaders 中可能存在的错误

Angular 6,不能应用多个HttpHeaders