使用 HttpClient 通过 AttributeRouting 在 URL 中发送日期

2023-11-30

我在获取 WebAPI 接受的日期范围查询时遇到一些问题。据我所知,从我读过的所有内容来看,这应该有效,但我仍然得到400 Bad Request回应。

我的 API 路线如下所示:

    [System.Web.Http.HttpGet]
    [GET("range/{start:datetime}/{end:datetime}")]
    public HttpResponseMessage Get(DateTime start, DateTime end)

我正在使用AttributeRouting图书馆并根据这一页我请求的网址应该没问题。

我的请求 URL 如下所示:

http://localhost:51258/plots/range/2013-07-29T21:58:39/2013-08-05T21:58:39

我在控制器上设置了这个RoutePrefix("plots")这就是plotsURL 路由的一部分来自。

如果我把时间从DateTime反对一切都很好,但我需要时间过去。


经过大量阅读后,似乎可以做我试图做的事情,但需要放松许多有用的安全措施才能做到这一点。由于有一个简单的解决方法,因此鉴于安全风险增加而放松这些措施是没有意义的。

我在 API 中遇到的错误是:

A potentially dangerous Request.Path value was detected from the client (:)

显然,这是用于分隔时间部分元素的冒号字符DateTime细绳。所以我做了以下改变。

我的 Api 操作方法现在如下所示:

[System.Web.Http.HttpGet]
[GET("range?{startDate:datetime}&{endDate:datetime}")]
public HttpResponseMessage Get(DateTime startDate, DateTime endDate)

日期现在被定义为查询字符串的一部分,而不是路径本身的一部分。

为了处理查询字符串的创建,我还有以下扩展方法:

public static string ToQueryString(this NameValueCollection source, bool removeEmptyEntries)
{
    return source != null ? "?" + String.Join("&", source.AllKeys
        .Where(key => !removeEmptyEntries || source.GetValues(key).Any(value => !String.IsNullOrEmpty(value)))
        .SelectMany(key => source.GetValues(key)
            .Where(value => !removeEmptyEntries || !String.IsNullOrEmpty(value))
            .Select(value => String.Format("{0}={1}", HttpUtility.UrlEncode(key), value != null ? HttpUtility.UrlEncode(value) : string.Empty)))
        .ToArray())
        : string.Empty;
}

在我的客户端代码中使用如下:

var queryStringParams = new NameValueCollection
    {
        {"startDate", start.ToString(_dateService.DefaultDateFormatStringWithTime)},
        {"endDate", end.ToString(_dateService.DefaultDateFormatStringWithTime)}
    };

var response = httpClient.GetAsync(ApiRootUrl + "plots/range" + queryStringParams.ToQueryString(true)).Result;

我的应用程序中的日期服务仅提供默认的日期格式字符串并使用以下模式:

"yyyy-MM-ddTHH:mm:ss"

由此生成的完整 URI 如下所示:

http://localhost:51258/plots/range?startDate=2013-07-30T21%3A48%3A26&endDate=2013-08-06T21%3A48%3A26

希望这对将来的其他人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 HttpClient 通过 AttributeRouting 在 URL 中发送日期 的相关文章

随机推荐

  • 为什么一个块元素中嵌套的多个内联块的innerHTML会影响内联块的定位?

    在这些示例中 注意 确保将结果窗口拖出足够宽 http jsfiddle net pPyaG http jsfiddle net pPyaG 1 http jsfiddle net pPyaG 2 为什么内联块元素内的文本数量会影响同一 d
  • POST json 字典

    我正在尝试以下操作 内部带有字典的模型在第一个ajax请求上发送它 然后将结果再次序列化并将其发送回控制器 这应该测试我是否可以在模型中取回字典 这不起作用 这是我的简单测试 public class HomeController Cont
  • 从字符串中删除空格 - 使用指针就地 C 风格

    所以 这是一个非常简单的问题 我知道解决方案是一个简单的函数 如下所示 void removeSpaces char s char source s char dest s while source if source source els
  • 如何填充投影图像的空白部分?

    当我在 2D 平面上投影 3D 模型 透视投影 时 投影结果如下图所示 我需要填充这张图片中的空白点 使其看起来像这样 我想知道我能找到一种好方法 使用任何使用 matlab 的图像处理算法 以专业的方式来填补这些点 Code in 数学
  • C# 用时区解析日期时间

    我们如何解析日期时间和时区
  • Wix工具集许可协议多语言问题

    我创建了具有多种语言的 license rtf 文件 当我尝试构建我的 wix 项目时 它向我显示以下错误 提供的字符串中包含指定数据库代码页 1252 中不可用的字符 将这些字符更改为数据库代码页中存在的字符 或者通过修改以下属性之一来更
  • 正确的方法是什么? CSS 链接伪类

    我刚刚发现这个 Note a hover 必须位于 CSS 中的 a link 和 a visited 之后 定义才能有效 Note a active 必须按顺序出现在 CSS 定义中的 a hover 之后 要有效果 Note 伪类名称不
  • 如何在Python中将二进制图像的内容/对象居中?

    我有一个计算图形方向的代码 然后根据这个方向旋转图形 直到它变直 这一切都很好 我正在努力解决的问题是将旋转图形的中心移至整个图像的中心 所以图形的中心点应该与整个图像的中心点相匹配 Input image code import cv2
  • 根据另一个数组键值对数组进行排序

    任何人都可以向我展示如何根据每个数组的依赖键对该数组进行排序的示例 我希望数组按照依赖关系的顺序排列 所以首先是 jquery 然后是 cookie bootstrap checkbox admin 我看过其他帖子 但它们对我来说没有意义
  • 用于检查字节数组是否为零的 SSE 指令 C#

    假设我有一个byte 并想检查所有字节是否为零 For 循环是一种显而易见的方法 而 LINQAll 这是一种奇特的方法 但最高性能至关重要 我该如何使用单SIMD加快检查字节数组是否充满零 我正在寻找最前沿的方法 而不仅仅是正确的解决方案
  • Python_RAKE中的关键字提取

    我是一名新手用户 对以下简单的 循环 问题感到困惑 我有一个本地目录 其中包含 x 个文件 大约 500 个 txt 文件 我想使用 RAKE for Python 从每个唯一文件中提取相应的关键字 我已经查看了 RAKE 的文档 但是 本
  • facebook开放图对象可以动态创建吗?

    我正在开发一个 Facebook 应用程序 我在开放图中创建了一个自定义对象 下面列出了我的一些担忧 特定对象类型下的每个对象实例是否都需要唯一的网页 我正在使用 JS SDK 发布打开图操作 是否有任何规则可以在 js 函数中使用对象 u
  • 如何将数据从 csv::StringRecord 推送到结构中的每个列向量?

    如何实施push self row csv StringRecord 下面的特质 输入是对a的引用csv StringRecord来自rust csv图书馆 这个想法是将每一列附加到其向量中 extern crate csv derive
  • 泛型方法有界类型参数和类型擦除

    通用方法如下 static
  • C++ 中的binary_search 意外行为

    下面的代码片段返回了 0 我期望它是 1 这里出了什么问题 include
  • 相当于Python中Ruby中的findall()方法吗?

    我需要从列表中的模糊列表中提取所有 MP3 标题 对于Python来说 这对我来说很好用 import re for i in re compile mmc mp3 findall open tracklist txt read print
  • iOS 动画贝塞尔/正弦曲线

    我正在寻找在 iOS 中循环播放单线贝塞尔曲线的动画 我脑海中的想法类似于 Siri 之前的 iPhone 4 上的语音控制屏幕 曲线不需要对任何东西做出反应 即 音频 麦克风等 只需从屏幕左循环到屏幕右 并改变曲线的幅度即可 我尝试了几次
  • iOS 证书过期

    我有一个应用程序的配置文件已过期 它似乎仍然在应用程序商店中 因此我假设您只需在下次更新时更新配置文件 这是正确的吗 我遇到的唯一问题是该应用程序使用推送通知 并且它们似乎已停止工作 当配置文件过期时 推送通知也会停止工作吗 我每年会更新什
  • 无需特定应用即可读取 NFC 标签?

    我想知道是否有任何方法可以将一串文本 URL 保存到 NFC 标签 例如 MIFARE 或 NTAG203 该标签可以被其他设备 智能手机 读取 而不需要任何特殊的标签读取应用程序 我测试了几个应用程序 例如Android 触发器 并注意到
  • 使用 HttpClient 通过 AttributeRouting 在 URL 中发送日期

    我在获取 WebAPI 接受的日期范围查询时遇到一些问题 据我所知 从我读过的所有内容来看 这应该有效 但我仍然得到400 Bad Request回应 我的 API 路线如下所示 System Web Http HttpGet GET ra