0

样本数据网址

_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。

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

肮脏的解决方案:
我尝试了所有建议,但我觉得没有更好的解决方案。没有别的办法,我做了一个肮脏的解决方案来完全获取 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;
}
4

3 回答 3

2

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

于 2012-08-17T20:13:25.047 回答
1

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

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

.. 和 URLDecode 他们在请求后与他们一起工作......

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

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

于 2012-08-17T20:13:35.827 回答
0

您提供的 URL 虽然有效,但不会以您期望的方式解析;它将按照当前的方式进行解析。除非对与号进行编码,否则不支持嵌套查询字符串。

于 2012-08-17T20:14:23.613 回答