Could someone tell me if the code below would achieve what I want, which is: Check if the query parameters 'return_path' and/or 'user_state' are present in the query string, and if so append them to the query string of the redirect URI.
As I'm not a .NET dev and don't have a server to test this on, I was hoping someone could give me some feedback.
ArrayList vars = new ArrayList();
vars.Add("return_path");
vars.Add("user_state");
string newUrl = "/new/request/uri" + "?";
ArrayList params = new ArrayList();
foreach ( string key in Request.QueryString ) {
if (vars.contains(key)) {
params.Add(key + "=" + HttpUtility.URLPathEncode(Request.QueryString[key]));
}
}
String[] paramArr = (String[]) params.ToArray( typeof (string) );
String queryString = String.join("&", paramArr);
Response.Redirect(newUrl);
Thank you :)
Looks like it will achieve what you want. My only concern is the use of the raw underscore (_) in a URL. Not sure that's allowed for URL encoding. If it turns out to be an issue, use either hyphen/minus or URL encode the underscore character.
Added after first response:
Ok. Checked. The underscore is bad for host names, not URL params.
Here is the code revamped with generics and LINQ. There's probably more concise syntax out there. Remember the list still only gets iterated once so it should be just as quick.
Also note: