1つのページから別のページへのリダイレクトと、2番目のページから3番目のページへの別のリダイレクトを行っています。 1ページ目から情報があり、2ページ目では使用していませんが、3ページ目に転送する必要があります。クエリ文字列を含む3番目のページのURLをクエリ文字列として2番目のページに送信することは可能ですか?次に例を示します。
Response.Redirect("MyURL1?redi=MyURL2?name=me&ID=123");
私の問題は、クエリ文字列として送信されるURLに2つのクエリ文字列変数があることです。そのため、システムは&の後にあるものが、最初のURLの2番目の変数ではなく2番目のURLの2番目の変数であることをどのようにして知るのでしょうか。ありがとうございました。
リダイレクトURLのパラメーターとして渡すURLをエンコードする必要があります。このような:
MyURL = "MyURL1?redi=" + Server.UrlEncode("MyURL2?name=me&ID=123");
これにより、二重の「?」なしで正しいURLが作成されますおよび「&」文字:
MyURL1?redi=MyURL2%3fname%3dme%26ID%3d123
MSDNを参照してください: HttpServerUtility.UrlEncode Method
このエンコードされたURLからリダイレクトURLを抽出するには、HttpServerUtility.UrlDecode
を使用して、正しいURLに再度変換する必要があります。
送信する前に、Base64でクエリ文字列パラメーターをエンコードすると便利です。これは、すべての種類の特殊文字を送信する必要がある場合に役立ちます。これは適切なデバッグ文字列にはなりませんが、送信しているすべてのものを他のパラメーターと混同しないように保護します。
覚えておいてください、クエリ文字列を解析している反対側も、元の入力にアクセスするためにBase64を解析する必要があります。
クエリ文字列は次のようになります。
MyURL1?redi=MyURL2&name=me&ID=123
チェック: http://en.wikipedia.org/wiki/Query_string
あなたはそれを持っているべきですか?記号と&で結合されたすべてのパラメーター。パラメータ値に特殊文字が含まれている場合は rlEncode それらのみです。
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();
}