1. ホーム
  2. c#

[解決済み】クエリ文字列に値を追加する

2022-04-16 21:08:17

質問

以下のようなURLのセットがリストになっています。

以下のコードでクエリ文字列を取得することに成功しました。

myurl = longurl.Split('?');
NameValueCollection qs = HttpUtility.ParseQueryString(myurl [1]);

foreach (string lol in qs)
{
    // results will return
}

のようなパラメータを返すだけです。 id , サーバー , 場所 などを、提供されたURLに基づいて表示します。

必要なのは、既存のクエリ文字列に値を追加/追記することです。

例えばURLの場合。

http://somesite.com/backup/index.php?action=login&attempts=1

クエリ文字列のパラメータの値を変更したいのですが。

action=login1

試行回数=11回

見ての通り、各値に "1" を追加しています。私は、異なるクエリ文字列を含む文字列から一連のURLを取得し、最後の&で各パラメータに値を追加し、再びリストにそれらを追加する必要があります。

どのように解決するのですか?

を使用することができます。 HttpUtility.ParseQueryString メソッドと UriBuilder これは、パースやURLエンコードなどを気にすることなく、クエリ文字列のパラメータを操作するための素晴らしい方法を提供します。

string longurl = "http://somesite.com/news.php?article=1&lang=en";
var uriBuilder = new UriBuilder(longurl);
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
query["action"] = "login1";
query["attempts"] = "11";
uriBuilder.Query = query.ToString();
longurl = uriBuilder.ToString();
// "http://somesite.com:80/news.php?article=1&lang=en&action=login1&attempts=11"