Справка с С# HttpWebRequest URI, теряющая свою кодировку

Проблема с HttpWebRequest расшифровывает мой кодированный URL.

var requestUrl = "https://www.google.com/webmasters/tools/feeds/http%3A%2F%2Fwww%2example%2Ecom%2F/crawlissues/";   
var request = (HttpWebRequest)WebRequest.Create(requestUrl);

При просмотре URL-адреса конечного запроса становится:

https://www.google.com/webmasters/tools/feeds/http://www.example.com//crawlissues/

Что, конечно же, возвращает 400 Bad-запрос. Я предполагаю, что это что-то делать с классом URI, а не с HttpWebRequest. Как остановить это?

Ответ 2

Я не думаю, что вы можете запросить этот URL.

Он не будет декодировать %2F в параметре запроса. Таким образом, он будет работать, если кодированные данные были в параметре запроса:

requestUrl = "https://google.com/tools?feeds=http%3A%2F%2Fwww%2example%2Ecom%2F/crawlissues/";   
var request = (HttpWebRequest)WebRequest.Create(requestUrl);

Ответ 3

Существует гораздо более простой способ для этого

var request=(HttpWebRequest)WebRequest.Create(Uri.EscapeUriString(requestUrl));
request.Headers.Add("Content-Transfer-Encoding","binary");

работал как прелесть для меня

Ответ 4

Не уверен, но может быть Метод HttpServerUtility.UrlEncode поможет.

Обновление.. Кроме того, вы можете использовать класс WebClient.

Ответ 5

Попробуйте изменить метод запроса с POST на GET