21

あるページから別のページへのリダイレクトと、2 番目のページから 3 番目のページへのリダイレクトを行っています。2 ページ目で使用されていない 1 ページ目の情報がありますが、3 ページ目に転送する必要があります。2 番目のページにクエリ文字列としてクエリ文字列を含む 3 番目のページの URL を送信することは可能ですか。次に例を示します。

Response.Redirect("MyURL1?redi=MyURL2?name=me&ID=123");

私の問題は、クエリ文字列として送信される URL に 2 つのクエリ文字列変数があることです。そのため、システムは & の後のものが 2 番目の URL の 2 番目の変数であり、最初の URL の 2 番目の変数ではないことをどのように認識しますか? ありがとうございました。

4

4 に答える 4

21

リダイレクトURLのパラメーターとして渡すURLをエンコードする必要があります。このような:

MyURL = "MyURL1?redi=" + Server.UrlEncode("MyURL2?name=me&ID=123");

これにより、二重の「?」なしで正しいURLが作成されます。および「&」文字:

MyURL1?redi=MyURL2%3fname%3dme%26ID%3d123

MSDN:HttpServerUtility.UrlEncodeメソッドを参照してください

このエンコードされたURLからリダイレクトURLを抽出するHttpServerUtility.UrlDecodeには、それを再び正しいURLに変換するために使用する必要があります。

于 2012-05-03T12:20:31.160 に答える
4

送信する前にクエリ文字列パラメーターを Base64 でエンコードすると便利です。これは、あらゆる種類の特殊文字を送信する必要がある場合に役立ちます。適切なデバッグ文字列にはなりませんが、送信するすべてのものを他のパラメーターと混在させないように保護します。

クエリ文字列を解析している反対側も、元の入力にアクセスするために Base64 を解析する必要があることに注意してください。

于 2012-05-03T12:28:30.590 に答える
3

クエリ文字列は次のようになります。

MyURL1?redi=MyURL2&name=me&ID=123

チェック: http://en.wikipedia.org/wiki/Query_string

あなたはそれを持っているべきですか?記号と & で結合されたすべてのパラメータ。パラメータ値に特殊文字が含まれている場合は、それらをUrlEncodeするだけです。

于 2012-05-03T12:13:56.467 に答える
0
using System.IO;
using System.Net;

static void sendParam()
{

    // Initialise new WebClient object to send request
    var client = new WebClient();

    // Add the QueryString parameters as Name Value Collections
    // that need to go with the HTTP request, the data being sent
    client.QueryString.Add("id", "1");
    client.QueryString.Add("author", "Amin Malakoti Khah");
    client.QueryString.Add("tag", "Programming");

    // Prepare the URL to send the request to
    string url = "http://026sms.ir/getparam.aspx";

    // Send the request and read the response
    var stream = client.OpenRead(url);
    var reader = new StreamReader(stream);
    var response = reader.ReadToEnd().Trim();

    // Clean up the stream and HTTP connection
    stream.Close();
    reader.Close();
}
于 2013-06-11T21:21:02.133 に答える