2012-08-17 101 views
0

样本数据URL从查询参数获取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。

注:它从第二个参数开始

肮脏的解决方案截断:
我尝试了所有的建议,但我觉得有没有更好的解决办法。没有其他的去,我做了一个肮脏的解决方案,以完全获得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; 
} 
+1

你可以发布任何代码,你实际上在做什么?你的例子很混乱。 – CoderMarkus 2012-08-17 19:53:18

+0

改进了实际样本的内容。 – 2012-08-17 20:10:08

+0

您必须编码路径(?和&s导致要拆分的参数)或再次连接它们 – StrubT 2012-08-17 20:12:27

回答

2

它看起来像这可能是由于在您FeedUrl第一“&”字,可以得到治疗作为外查询字符串的查询参数的事实。您可能需要先编码FeedUrl。这只是我最初的直觉。

1

你需要将它们添加到URL时来urlencode您的网址变量...

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

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

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

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

0

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