#620 - Trasmettere un cookie ad una pagina remota con ASP.NET e WebClient

Molto spesso all'interno delle nostre pagine dobbiamo far riferimento ad altre, ad esempio attraverso l'uso di WebClient, passando come riferimento un cookie, che ad esempio contiente l'ID di sessione piuttosto che il cookie di autenticazione.
In casi come questi si è portati ad utilizzare l'accoppiata WebRequest/WebResponse perchè, a prima vista, la classe WebClient non espone una proprietà diretta per associare cookie.
In realtà basta aggiungere alla collezioone Headers, che è di tipo WebHeaderCollection, il cookie stesso, come una normale header HTTP, che è poi quello che in fin dei conti è.
Il codice riportato non fa altro che trasmettere un cookie alla pagina remota:

<%@ Import namespace="System.Net" %>
<SCRIPT RUNAT="SERVER" LANGUAGE="C#">

void Page_Load() {
  Response.Write(GetUrlWithCookie("http://www.sito.ext/login.aspx"));
}

string GetUrlWithCookie(string url) {

  // WebClient

  WebClient request = new WebClient();

  // aggiungo cookie

  WebHeaderCollection headerCookies = new WebHeaderCollection();
  headerCookies.Add("Cookie", "cookie=valore");

  request.Headers.Add(headerCookies);

  // scarico risultato

  Byte[] bResult = request.DownloadData(url);

  // de-encoding dei dati e conversione in stringa

  Encoding objEncoded = Encoding.GetEncoding("iso-8859-1");
  return objEncoded.GetString(bResult);
}
</SCRIPT>


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC