我想使用控制台应用程序轻松地从其params划分URL,以便我可以对参数进行URL编码。是否有一种类型使这简单?请记住,这是在Web服务器之外运行的。
网址格式为
E.G。
string url = "http://sitename/folder1/someweb.dll?RetrieveTestByDateTime?PatientID=1234¶m2=blah blah blah";
那么我可以做到
string finalUrl = "http://sitename/folder1/someweb.dll?RetriveTestByDateTime?PatientID=" + HttpUtility.UrlEncode(PatientIDValue) + HttpUtility.UrlEncode(param2Value);
第二,第二个?
是否有效?此数据来自第三方应用。当然这可以通过Regex实现,但我不想使用它,因为我团队中的大多数人都不知道正则表达式。
答案 0 :(得分:4)
使用Uri
类 - 将字符串url
传递给构造函数,它将解析出不同的部分。
查询将位于Query
属性中,您可以使用Scheme
,AbsolutePath
和编码的Query
轻松重建网址。
答案 1 :(得分:0)
首先你的网址结构不好
string url = "http://sitename/folder1/someweb.dll?RetrieveTestByDateTime?PatientID=1234¶m2=blah blah blah";
应该是
string url = "http://sitename/folder1/someweb.dll?RetrieveTestByDateTime&PatientID=1234¶m2=blah blah blah";
一个可能的解决方案,我现在不在开发环境中,所以这是从头开始。可能需要对代码进行一些更改。
string url = "http://sitename/folder1/someweb.dll?RetrieveTestByDateTime&PatientID=1234¶m2=blah blah blah";
var uri = new Uri(url);
var queryString = uri.Query;
NameValueCollection query = HttpUtility.ParseQueryString(queryString)
query["PatientID"] = string.Concat(HttpUtility.UrlEncode(PatientIDValue), HttpUtility.UrlEncode(param2Value));
// Rebuild the querystring
queryString = "?" +
string.Join("&",
Array.ConvertAll(query.AllKeys,
key => string.Format("{0}={1}",
HttpUtility.UrlEncode(key),
HttpUtility.UrlEncode(query[key]))));