0

サンプルデータ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

Required : 完全な URL が必要です。

注: 2 番目のパラメーター以降は切り捨てられます

汚い解決策:
すべての提案を試しましたが、これ以上の解決策はないと感じました。他に方法はありません。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に追加するときは、URL変数をURLエンコードする必要があります...

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 に答える