C#发起Http请求,请求地址中带有'%2F'自动转为'/',如何处理?

osnot 2015-06-29 01:21:18
RT,假定请求地址如下:
var url = http://www.baidu.com/first-path%2Fsecond-path%2Fthird-path/somepath
利用C#发起请求:
var w = System.Net.WebRequest.Create(url);
结果查看:Console.WriteLine(w.RequestUri.AbsoluteUri);
是:http://www.baidu.com/first-path/second-path/third-path/somepath
但是这两个地址的确是不同的,在Method="PUT"时,两个请求原地址(带有%2F)返回201:Created,另一个(%2F被替换成/)返回404:Not Found,具体地址不方便说。
请问大家谁知道是怎么回事?如何用C#发起第一个地址的请求?
...全文
501 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
就是把%又做了一次转换
osnot 2015-06-29
  • 打赏
  • 举报
回复
引用 8 楼 starfd 的回复:
就是把%又做了一次转换
恩,对的。
osnot 2015-06-29
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
去stackoverflow搜了下,发现:http://stackoverflow.com/questions/10231368/net-webrequest-create-decoding-encoded-uri 用这种方式,就可以了: string url = "http://www.baidu.com/first-path%2Fsecond-path%2Fthird-path/somepath"; var urle = Uri.EscapeUriString(url); Console.WriteLine(urle); Uri uri = new Uri(urle); //var uri = new Uri(url); Console.WriteLine(uri); var request = WebRequest.Create(uri); Console.WriteLine(request.RequestUri.AbsoluteUri); 显示: http://www.baidu.com/first-path%252Fsecond-path%252Fthird-path/somepath http://www.baidu.com/first-path%252Fsecond-path%252Fthird-path/somepath http://www.baidu.com/first-path%252Fsecond-path%252Fthird-path/somepath 谢谢你,原来.net 4.5是好的。
  • 打赏
  • 举报
回复
试了下改成4.0果然也是变了
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
VS2013-4.5……
osnot 2015-06-29
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
var uri = new Uri("http://www.baidu.com/first-path%2Fsecond-path%2Fthird-path/somepath");
            Console.WriteLine(uri);
            var request = WebRequest.Create(uri);
            Console.WriteLine(request.RequestUri.AbsoluteUri);
测试下来是%2F
见上面回复。
osnot 2015-06-29
  • 打赏
  • 举报
回复
首先谢谢回复。 我用你的代码跑了下,控制台显示如下: http://www.baidu.com/first-path/second-path/third-path/somepath http://www.baidu.com/first-path/second-path/third-path/somepath 还是不正确的,我的环境是VS2013-.net 4.0,请问你的是?
  • 打赏
  • 举报
回复
var uri = new Uri("http://www.baidu.com/first-path%2Fsecond-path%2Fthird-path/somepath");
            Console.WriteLine(uri);
            var request = WebRequest.Create(uri);
            Console.WriteLine(request.RequestUri.AbsoluteUri);
测试下来是%2F

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧