Je fais une redirection d'une page à une autre et une autre redirection de la deuxième page à une troisième. J'ai des informations de la première page qui ne sont pas utilisées sur la deuxième page mais doivent être transférées sur la troisième page. Est-il possible d'envoyer l'URL de la troisième page avec ses chaînes de requête en tant que chaîne de requête à la deuxième page. Voici un exemple:
Response.Redirect("MyURL1?redi=MyURL2?name=me&ID=123");
Mon problème est que l'URL envoyée en tant que chaîne de requête a deux variables de chaîne de requête, alors comment le système saura-t-il que ce qui est après le & est la deuxième variable de la deuxième URL et non une deuxième variable de la première URL? Je vous remercie.
Vous devez coder l'URL que vous passez en tant que paramètre dans votre URL de redirection. Comme ça:
MyURL = "MyURL1?redi=" + Server.UrlEncode("MyURL2?name=me&ID=123");
Cela va créer une URL correcte sans le double "?" et les caractères '&':
MyURL1?redi=MyURL2%3fname%3dme%26ID%3d123
Voir MSDN: méthode HttpServerUtility.UrlEncode
Pour extraire votre URL de redirection de cette URL codée, vous devez utiliser HttpServerUtility.UrlDecode
pour le transformer à nouveau en une URL correcte.
Je trouve utile de coder les paramètres de chaîne de requête dans Base64 avant d'envoyer. Dans certains cas, cela aide, lorsque vous devez envoyer toutes sortes de caractères spéciaux. Cela ne fait pas de bonnes chaînes de débogage, mais cela empêchera tout ce que vous envoyez de se mélanger avec d'autres paramètres.
N'oubliez pas que l'autre partie qui analyse la chaîne de requête devra également analyser la Base64 pour accéder à l'entrée d'origine.
Votre chaîne de requête devrait ressembler à ceci:
MyURL1?redi=MyURL2&name=me&ID=123
Vérifiez: http://en.wikipedia.org/wiki/Query_string
Vous devriez en avoir un? signe et tous les paramètres joints à &. Si les valeurs des paramètres contiennent des caractères spéciaux juste rlEncode eux.
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();
}