Ответ 1
Это раздражающая "функция безопасности" класса Uri. Если вы используете 4.0 или новее, вы можете отключить его в своем файле конфигурации; в противном случае вам нужно прибегнуть к отражению.
Проблема с 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. Как остановить это?
Это раздражающая "функция безопасности" класса Uri. Если вы используете 4.0 или новее, вы можете отключить его в своем файле конфигурации; в противном случае вам нужно прибегнуть к отражению.
Я не думаю, что вы можете запросить этот URL.
Он не будет декодировать %2F
в параметре запроса. Таким образом, он будет работать, если кодированные данные были в параметре запроса:
requestUrl = "https://google.com/tools?feeds=http%3A%2F%2Fwww%2example%2Ecom%2F/crawlissues/";
var request = (HttpWebRequest)WebRequest.Create(requestUrl);
Существует гораздо более простой способ для этого
var request=(HttpWebRequest)WebRequest.Create(Uri.EscapeUriString(requestUrl));
request.Headers.Add("Content-Transfer-Encoding","binary");
работал как прелесть для меня
Не уверен, но может быть Метод HttpServerUtility.UrlEncode поможет.
Обновление.. Кроме того, вы можете использовать класс WebClient.
Попробуйте изменить метод запроса с POST на GET