У меня проблема с преобразованием URL-адресов автоматически при их обработке.Проблема с доступом к URL-адресам с экранированными символами в C#
Uri myUri = new Uri(this.url);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri);
request.ProtocolVersion = HttpVersion.Version10;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Извинения для длинных URL-адресов В этом случае: this.url правильно
(https://zencoder-live.s3.amazonaws.com:443/ec03a97b1f726d8ee65774313a100db5%2Fa54779efdf5d1f64ac82954c870beb12.mp4?Signature=nrc0U65Pe3PiORokhAscndLdP68%3D&Expires=1284625412&AWSAccessKeyId=AKIAIIEXNN2J4YDTRUVQ)
В то время как URL внутри объекта Uri не
({https://zencoder-live.s3.amazonaws.com/ec03a97b1f726d8ee65774313a100db5/a54779efdf5d1f64ac82954c870beb12.mp4?Signature=nrc0U65Pe3PiORokhAscndLdP68=&Expires=1284625412&AWSAccessKeyId=AKIAIIEXNN2J4YDTRUVQ}
Обратите внимание на отличия " % 2F "->"/". То же самое происходит, если я кормлю this.url прямо в WebRequest, и я получаю ошибку 403 от сервера S3, потому что подписи больше не совпадают.
Есть ли способ предотвратить появление таких преобразований?
EDIT: Как это настольное приложение (жаль не упоминая ранее) HTTPUtilities не доступен, но класс URI имеет сходную функцию, поэтому я попытался что
this.url = Uri.EscapeUriString (это. URL); и this.url получает значение:
https://zencoder-live.s3.amazonaws.com:443/e09517d7841a9047f9ff7a2f015d2596%252F1e8e7e8e1a85665bc7e9b146ce444a88.mp4?Signature=6bs5vfOBUDeHeX2HdmrvVGDnDjE%253D&Expires=1284627002&AWSAccessKeyId=AKIAIIEXNN2J4YDTRUVQ
и затем из HttpWebRequest Объект:
https://zencoder-live.s3.amazonaws.com/e09517d7841a9047f9ff7a2f015d2596%252F1e8e7e8e1a85665bc7e9b146ce444a88.mp4?Signature=6bs5vfOBUDeHeX2HdmrvVGDnDjE%253D&Expires=1284627002&AWSAccessKeyId=AKIAIIEXNN2J4YDTRUVQ
HttpWebRequest объект не превратили его вовсе, так что URI все еще неверны. % 2F преобразуется в% 252F и не возвращается обратно к% 2F при создании объекта Uri.
Я видел это, но он не работает должным образом. Пожалуйста, перейдите в исходный вопрос – paullb
Я попытался импортировать класс HttpUtility, но он просто преобразует всю строку, которую отклоняет Uri/HttpWebRequest: «https% 3a% 2f% 2fzencoder-live.s3.amazonaws.com% 3a443% 2f2e33f7d90e54b1e8816eb1d7d80e6b08% 252Fe80da01b484e4c4167f944e1952a0577 .mp4% 3fSignature% 3d08VGDqDybKH8QN5lDKHzn46Fy2M% 253D% 26Expires% 3d1284688887% 26AWSAccessKeyId% 3dAKIAIIEXNN2J4YDTRUVQ " – paullb