2017-01-25 7 views
0

У меня есть следующий код, чтобы получить параметры и их ключ из URL:Как получить параметр из URL-адреса, закодированного?

string queryString = new Uri(URL).Query; 
var queryDictionary = System.Web.HttpUtility.ParseQueryString(queryString); 

var paramsList = new Dictionary<string, string>(); 

foreach (var parameter in queryDictionary) 
{ 
    var key = (string)parameter; 
    var value = System.Web.HttpUtility.ParseQueryString(queryString).Get(key); 
} 

Он работает идеально. Исключение, в value, у меня есть decoded value. Мне нужно было бы это, как было в адресе, до его декодирования. Как мне это сделать? Обратите внимание, что для кодирования после этого в некоторых случаях различное значение.

+0

не 'queryString' не дает вам сбежать? – Crowcoder

+0

сбежал? простите, я не уверен, что вы подразумеваете под этим. – Cher

+0

закодировано так же, как и escaped – Crowcoder

ответ

1

Кодирование уже происходит в первой строке:

string queryString = new Uri(URL).Query; 

Предположительно вы хотите избежать написания собственного кода, чтобы извлечь часть запроса из URL. Это разумно. Вы все еще можете рассчитывать на Uri класс, чтобы сделать синтаксический для вас:

var uri=new Uri(URL); 
var queryString= URL.Replace(uri.GetLeftPart(UriPartial.Path), "").TrimStart('?'); 

---------------------------- -------

(

var URL="http://a/b/?d= @£$%% sdf we 456 7 5?367"; 
var uri=new Uri(URL); 
Console.WriteLine(uri.Query); // Already url-encoded by the Uri constructor 
var queryString = URL.Replace(uri.GetLeftPart(UriPartial.Path), "").TrimStart('?'); 
Console.WriteLine(System.Web.HttpUtility.ParseQueryString(queryString)); //Not encoded! 

)

(Как и в сторону, LinqPad помогает)

0

Возможный способ сделать это, чтобы кодировать его обратно:

var encodedValue = HttpUtility.UrlEncode(value); 

ASP.NET автоматически вызывает HttpUtility.UrlDecode при доступе к строке запроса.

Это немного грязно, но должно работать нормально.

+0

проблема у меня в том, что она затем закодирована, но иногда она меняется – Cher

Смежные вопросы