有关访问C#中带有转义字符的URL的问题#
我有一个URL正在被处理时自动转换的问题。有关访问C#中带有转义字符的URL的问题#
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)
尽管Uri对象里面的网址是不是
({https://zencoder-live.s3.amazonaws.com/ec03a97b1f726d8ee65774313a100db5/a54779efdf5d1f64ac82954c870beb12.mp4?Signature=nrc0U65Pe3PiORokhAscndLdP68=&Expires=1284625412&AWSAccessKeyId=AKIAIIEXNN2J4YDTRUVQ}
注意的差异“ %2F“ - >”/“。 同样的情况发生,如果我将这个.url直接提供给WebRequest,并且从S3服务器收到403错误,因为签名不再匹配。
有没有办法来防止这种转变发生?
编辑: 由于这是一个桌面应用程序(对不起,早不提)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,并且在创建Uri对象时不会转换回%2F。
回答:
您可能想看看HttpUtility类,它提供了UrlDecode/UrlEncode方法。
回答:
%2F
在第一个URL中正在正确转换为/
。
为了解决这个问题,您必须首先编码HttpUtility.UrlEncode()
以确保编码%
。
Uri myUri = new Uri(HttpUtility.UrlEncode(this.url));
以上是 有关访问C#中带有转义字符的URL的问题# 的全部内容, 来源链接: utcz.com/qa/262817.html