将url视为c#对象,以便可以拆分参数
我想使用控制台应用程序轻松地将URL与其参数分开,以便对参数进行URL编码。有没有一种类型可以让这变得简单?请记住,这是在web服务器之外运行的 URL的格式如下所示 例如 那么我能做什么将url视为c#对象,以便可以拆分参数,c#,http,C#,Http,我想使用控制台应用程序轻松地将URL与其参数分开,以便对参数进行URL编码。有没有一种类型可以让这变得简单?请记住,这是在web服务器之外运行的 URL的格式如下所示 例如 那么我能做什么 string finalUrl = "http://sitename/folder1/someweb.dll?RetriveTestByDateTime?PatientID=" + HttpUtility.UrlEncode(PatientIDValue) + HttpUtility.UrlEncode(pa
string finalUrl = "http://sitename/folder1/someweb.dll?RetriveTestByDateTime?PatientID=" + HttpUtility.UrlEncode(PatientIDValue) + HttpUtility.UrlEncode(param2Value);
第二,第二个?
有效吗?此数据来自第三方应用程序。当然,这可以通过正则表达式实现,但我不喜欢使用它,因为我的团队中的大多数人都不知道正则表达式。使用字符串url
中的class-pass传递给构造函数,它将解析出不同的部分
查询将位于query
属性中,您可以使用Scheme
、AbsolutePath
和编码的query
将字符串URL
中的类-pass传递给构造函数,它将解析出不同的部分
查询将位于
查询
属性中,您可以使用方案
,绝对路径
和编码的查询
,轻松重建URL。首先,您的URL结构不好
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]))));
首先,你的url结构不好
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]))));
您可以编写自己的实用程序。URL上的第二个
?
将被视为第一个参数名称的一部分。您可以编写自己的实用程序。URL上的第二个?
将被视为第一个参数名称的一部分。我认为Uri无法解决OPs问题(或者可能是我误解了他的问题)@SaeedAmiri-我相信这正是OP的要求。你完全误解了这个问题,没有提供任何帮助来解决这个问题-这个答案比我希望的更好。Uri对象自动对URL进行编码!所以我甚至不需要这个工具。非常好@Trikks-看到OP接受了答案,看起来这对他有帮助。请解释我是如何误解这个问题的。我认为Uri无法解决OPs问题(或者可能是我误解了他的问题)。@SaeedAmiri-我相信这正是OP所要求的。你完全误解了这个问题,没有提供任何帮助来解决这个问题-这个答案甚至比我希望的更好。Uri对象自动对URL进行编码!所以我甚至不需要这个工具。非常好@Trikks-看到OP接受了答案,看起来这对他有帮助。请解释我是如何误解这个问题的。URL是从第三方Web服务输入的。更改他们的URL没有多大意义(假设它有效)。我认为Uri类应该自动修复这个问题。URL是从第三方Web服务输入的。更改他们的URL没有多大意义(假设它能工作)。我认为Uri类应该自动修复这个问题。