从查询参数中获取URL

时间:2012-08-17 19:36:44

标签: c# url

示例数据网址

_http://abc.com/cache.ashx?feedURL=http://search.twitter.com/search.rss?q=from%3AAbbottNews&rpp=3&clientsource=TWITTERINC_WIDGET&include_entities=true&result_type=recent&1334673762143=cachebust

我试图获取查询参数FeedURL的值,而不是我得到的值;

实际: http://search.twitter.com/search.rss?q=from%3AAbbottNews&rpp=3&clientsource=TWITTERINC_WIDGET&include_entities=true&result_type=recent&1334673762143=cachebust

我得到了什么: http://search.twitter.com/search.rss?q=from%3AAbbottNews

必需:我需要完整的网址。

注意:它从第二个参数开始截断

肮脏的解决方案:
我尝试了所有的建议,但我觉得没有更好的解决方案。没有别的去,我做了一个肮脏的解决方案来完全获得URL的正确部分。

/// <summary>
/// Get Feed URL from raw URL
/// </summary>
/// <param name="rawURL"></param>
/// <returns></returns>
public static string GetFeedURL(string rawURL)
{
    int index = rawURL.IndexOf("=");
    string _rawURL = rawURL;

    if (index > 0)
        _rawURL = _rawURL.Substring(index).Remove(0, 1);

    return _rawURL;
}

3 个答案:

答案 0 :(得分:2)

看起来这可能是因为第一个“&amp;”您的FeedUrl中的字符可能会被视为外部查询字符串的查询参数。您可能需要先对FeedUrl进行编码。这只是我最初的直觉。

答案 1 :(得分:1)

将URL变量添加到URL时,您需要对URL变量进行URLEncode ...

url = "http://url.com?id=" + HttpUtility.UrlEncode("...");
Response.Redirect(url);

..和URLDecode他们在请求后与他们合作...

HttpUtility.UrlDecode(Request.QueryString["id"]);

否则,QueryString请求不知道如何处理所有额外的?和&amp;'s。

答案 2 :(得分:0)

您提供的网址虽然有效,但不会按您的预期解析;它将按照目前的方式进行解析。除非编码&符号,否则不支持嵌套查询字符串。