Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';是否需要正确转义URI以在HttpClient.PostAsync中使用?_C#_Http - Fatal编程技术网

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);