4

实际上,我正在使用这种方式。你有更好的方法吗?

private bool AcceptJson(HttpRequest request)
{
    const string JsonType = "application/json";

    if (request.ContentType.ToLower(CultureInfo.InvariantCulture).StartsWith(JsonType))
    {
        return true;
    }

    if (request.AcceptTypes.Select(t => t.ToLower(CultureInfo.InvariantCulture) == JsonType).Count() > 0)
    {
        return true;
    }

    return false;
}
4

2 回答 2

3

这种方法可能会导致误报(它不考虑 q 值或 application/json 是子字符串的内容类型)。

您可以在这篇关于 XHTML的文章中找到一个不错的 Accept 标头解析器。您必须将算法移植到您选择的语言并使其适应您正在使用的内容类型。

于 2008-10-06T17:34:05.703 回答
1

很难知道你所说的“更好”是什么意思。严格来说,您不需要担心内容类型,因此可以将其删除。我想技术上更好的方法是删除 Select 调用并将条件放入 Count 方法中。

于 2008-10-07T13:43:41.377 回答