【问题标题】:Extracting Username and Password from raw URL从原始 URL 中提取用户名和密码
【发布时间】:2014-08-24 20:10:54
【问题描述】:

我有一个接受字符串参数的网络服务。该参数将始终是原始网址。用户向我发送一个带有用户名、requestid 的原始 url,选项是或否。例如:

http://bookReport/request.aspx?user=abc&password=password&request=1&option=yes

我正在创建一个 Web 请求并传递 URL,如下所示。

var request = (HttpWebRequest)WebRequest.Create(url);
var user = request.RequestUri.Query.ToString();
string[] p = Regex.Split(user, "password=");
string[] password = Regex.Split(p[1], "&request=");

如何在不使用 Regex.Split 方法的情况下获取用户名、密码、请求和选项?

【问题讨论】:

  • @Bartdude 我认为使用查询字符串更容易。此外,可能会有更多信息通过 url 传递。我正在尝试减少做这么多 Regex.Split。
  • 当然使用查询字符串更容易......我实际上认为这个URL已经是查询字符串参数之一。那么为什么不使用查询字符串呢?这就是这个对象的目的……
  • 您是在创建请求还是响应请求?
  • 我正在响应请求。该人调用 AuthenticateUser 方法并将 url 作为参数传递。当我收到 url 时,它是一个原始 url,我必须从中提取用户名、密码、请求和选项。然后,我必须使用提取的信息对用户进行身份验证。

标签: c# url query-string


【解决方案1】:

一些人建议您可以通过 Request 对象的 QueryString 索引器访问查询字符串。该索引器出现在 System.Web.HttpRequest 中,而有问题的对象是 System.Net.HttpWebRequest。它们是非常不同的东西。 HttpUtility 类将为您解析查询字符串中的参数:

    Uri uri = new Uri("http://bookReport/request.aspx?user=abc&password=password&request=1&option=yes");        
    var qs = HttpUtility.ParseQueryString(uri.Query);

.Net Fiddle here

【讨论】:

    【解决方案2】:

    您可以使用 Request.QueryString 函数访问查询字符串变量,如下所示

        string userName = Request.QueryString["user"];
        string password = Request.QueryString["password"];
        string request = Request.QueryString["request"];
        string option = Request.QueryString["option"];
    

    通过查看您的代码,获得了另一种从字符串中检索查询字符串值的方法。您可以使用以下代码

                Uri uri = new Uri(url);
                var values= HttpUtility.ParseQueryString(uri.Query);
                string userName = values["user"];
                string password = values["password"];
                string request = values["request"];
                string option = values["option"];
    

    【讨论】:

    • 我试过了,它是空的。 string[] p = Regex.Split(user, "password=");字符串用户名 = Request.QueryString["user"]; //它返回null
    • 我做了 Request.QueryString["user"];它是空的。我不能做 request.QueryString["user"] 因为我不认为 QueryString 是 HttpWebRequest 的成员。
    • 尝试第二种方法
    【解决方案3】:
    string userName = request.QueryString["user"];
    string password = request.QueryString["password"];
    

    【讨论】:

    • 我试过 request.QueryString["user"],结果为空。
    • 我认为您的整个代码必须替换为 string userName = Request.QueryString["user"];字符串密码 = Request.QueryString["password"];
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2011-03-17
    • 2015-02-26
    • 1970-01-01
    • 2015-02-24
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多