Я пытаюсь использовать HttpClient для создания запроса GET со следующим Uri:
http://test.com?action=enterorder&ordersource=acme&resid=urn%3Auuid%3A0c5eea50-9116-414e-8628-14b89849808d Как видите, остаточный параметр экранирован с помощью% 3A, то есть символа ":".
Когда я использую этот Uri в запросе HttpClient, URL-адрес становится:
http://test.com?action=enterorder&ordersource=acme&resid=urn:uuid:0c5eea50-9116-414e-8628-14b89849808d, и я получаю сообщение об ошибке от сервера, потому что ожидается% 3A.
Кто-нибудь знает, что делать, чтобы сохранить экранированный Uri при отправке запроса? Кажется, что HttpClient всегда неэкранировал символы в строке перед ее отправкой. Вот используемый код:
Uri uri = new Uri("http://test.com?action=enterorder&ordersource=acme&resid=urn%3Auuid%3A0c5eea50-9116-414e-8628-14b89849808d");
using (HttpClient client = new HttpClient())
{
var resp = client.GetAsync(uri);
if (resp.Result.IsSuccessStatusCode)
{
var responseContent = resp.Result.Content;
string content = responseContent.ReadAsStringAsync().Result;
}
}
GetAsync
?client.GetAsync(uri.OriginalString);
- person keyboardP   schedule 06.08.2013uri
? Вы создаете его, но он никогда не используется. Вы пробовалиclient.GetAsync("http://test.com?action=enterorder&ordersource=acme&resid=urn%3Auuid%3A0c5eea50-9116-414e-8628-14b89849808d"
? - person Peter Ritchie   schedule 06.08.2013