编码URL的参数

use*_*192 46 .net c# url silverlight encoding

我有一个构建URL的Silverlight应用程序.此URL是对基于REST的服务的调用.此服务需要一个表示位置的参数.位置是"城市,州"的形式.要构建此URL,我将调用以下代码:

string url = "http://www.example.com/myService.svc/";
url += HttpUtility.UrlEncode(locationTextBox.Text);
Run Code Online (Sandbox Code Playgroud)

如果用户在locationTextBox中输入"chicago,il",结果如下所示:

http://www.example.com/myService.svc/chicago%2c+il
Run Code Online (Sandbox Code Playgroud)

但实际上,我有点期待网址看起来像;

http://www.example.com/myService.svc/chicago,%20il
Run Code Online (Sandbox Code Playgroud)

通过浏览器URL测试我的服务时,我期待的那个工作.但是,生成的URL无法正常工作.我究竟做错了什么?

Ale*_*kov 73

我会推荐Uri.EscapeDataString而不是使用HttpUtility函数.请参阅Server.UrlEncode与HttpUtility.UrlEncode中的讨论.

  • 我试过这个并且仍然得到'#'字符的错误.请在此处查看我的问题:http://stackoverflow.com/questions/31699335/regex-to-validate-a-string-that-will-be-one-of-the-of-wcf-rest-method-url- parame (3认同)

Joc*_*mpe 6

尝试使用UrlPathEncode()方法.查看备注:http: //msdn.microsoft.com/en-us/library/h10z5byc.aspx

引用:

您可以使用UrlEncode()方法或UrlPathEncode()方法对URL进行编码.但是,这些方法会返回不同的结果.UrlEncode()方法将每个空格字符转换为加号字符(+).UrlPathEncode()方法将每个空格字符转换为字符串"%20",表示十六进制表示法的空格.在对URL的路径部分进行编码时,请使用UrlPathEncode()方法,以保证解码的URL一致,无论哪个平台或浏览器执行解码.