有没有一种方法可以在Uri中为HttpClient发送转义的转义字符

时间:2019-09-16 18:44:58

标签: c# httpclient

我正在尝试使用网址中的句点发出GET http请求

例如 http://testsite.com/TestEndpoint/Members/first%2Elast%40testemail%2Ecom

在上面的示例中,first.last@testemail.com转义为 first%2Elast%40testemail%2Ecom

问题是HttpClient从字符串中创建一个Uri,该字符串将%2E 取消转义为(部分网址变为 first.last%40testmail。 com ),这会导致公共API抛出未找到端点的错误。

我可以从Postman发出此请求,它可以正常工作,但可以从.net HttpClient或WebRequest.Create失败。

有没有办法告诉HttpClient不要取消转义URL?

var uri = new Uri("http://testsite.com/TestEndpoint/Members/first%2Elast%40testemail%2Ecom");

我也尝试过Creating an Uri in .NET automatically urldecodes all parameters from passed string

但这无效,不确定该功能是否已损坏或不再受支持。

1 个答案:

答案 0 :(得分:-1)

您可以尝试通过以下方法进一步“转义”您想要的URL:

client.GetAsync(new Uri("http://testsite.com/testendpoint?members=" + HttpUtility.UrlEncode("first%2Elast%40testemail%2Ecom"));