C# 什么';是否需要正确转义URI以在HttpClient.PostAsync中使用?
C# 什么';是否需要正确转义URI以在HttpClient.PostAsync中使用?,c#,http,C#,Http,HttpClient.PostAsync()的大多数重载都允许传入字符串或URI。但是,有些(在格式化命名空间中)只允许使用字符串。为了使用它,我构建并使用一个URI字符串,如: string uri = "http://myserver.com/" + userSuppliedName + "/dosomething/"; client.PostAsync(uri, someObject, formatter); 我现在担心的是,userSuppliedName可能是无效的或恶意的,所以我想
HttpClient.PostAsync()
的大多数重载都允许传入字符串或URI
。但是,有些(在格式化
命名空间中)只允许使用字符串。为了使用它,我构建并使用一个URI字符串,如:
string uri = "http://myserver.com/" + userSuppliedName + "/dosomething/";
client.PostAsync(uri, someObject, formatter);
我现在担心的是,userSuppliedName
可能是无效的或恶意的,所以我想确保它被正确转义。在System.Uri
的文档中,它声明默认情况下传入的字符串将正确转义,但由于我使用的PostAsync
方法仅支持字符串Uri,我想检查:它是否会自动正确转义?如果不是,我应该在构造字符串uri
时转义userSuppliedName
吗?您可以传递新uri(uri)。AbsoluteUri
作为第一个参数并缓解编码问题。它会为您完成的。您可以传递新Uri(Uri)。AbsoluteUri
作为第一个参数,以缓解编码问题。它会帮你的。使用
使用
这似乎是更好的解决方案,但并不能真正回答此方法是否自动转义URI!如果您碰巧知道/发现,请编辑以防有人提出问题:)这似乎是更好的解决方案,但并不能真正回答此方法是否自动转义URI!如果您碰巧知道/发现,请编辑以防有人提出问题:)
string uri = "http://myserver.com/" + Uri.EscapeDataString(userSuppliedName) + "/dosomething/";
client.PostAsync(uri, someObject, formatter);