正确转义 URI 以在 HttpClient.PostAsync 中使用需要什么?



大多数HttpClient.PostAsync()的重载允许传入一个字符串或URI。然而,有些(在Formatting命名空间中)只允许字符串。为此,我构建并使用如下URI字符串:

string uri = "http://myserver.com/" + userSuppliedName + "/dosomething/";
client.PostAsync(uri, someObject, formatter);

我现在担心的是userSuppliedName可能是无效的或恶意的,所以我想确保它被正确转义。在System.Uri的文档中,它声明默认情况下传入的字符串将被正确转义,但由于我使用的PostAsync方法只支持字符串URI,我想检查:它会自动正确转义吗?如果不是,我应该在构建string uri时转义userSuppliedName吗?

Use Uri.EscapeDataString()

string uri = "http://myserver.com/" + Uri.EscapeDataString(userSuppliedName) + "/dosomething/";
client.PostAsync(uri, someObject, formatter);

您可以传递new Uri(uri).AbsoluteUri作为第一个参数,以缓解编码问题。它会帮你的

最新更新