Estoy intentando crear una sesión HttpWebRequest/HttpWebResponse con un sitio web ASP.NET para analizar posteriormente un formulario HTML a través de parámetros de URL (esta parte lo sé cómo hacerlo), pero no entiendo cómo analizar y configurar una cookie, como la identificación de la sesión. En Fiddler, muestra que la Id. De sesión de ASP.NET se devuelve a través de Set-Cookie en la respuesta a la solicitud a la/ruta de la url, pero ¿cómo puedo extraer esta id de sesión y configurarla como una cookie para la próxima HttpWebRequest? ? Entiendo que este encabezado Set-Cookie se encontraría en HttpWebResponse.Headers.Keys, pero ¿hay una ruta directa para analizarlo? ¡Gracias!Cómo analizar HttpWebResponse.Headers.Keys para una ID de sesión de Set-Cookie devuelta
Respuesta
.NET framework administrará las cookies por usted. No tiene que preocuparse por analizar la información de la cookie fuera de los encabezados o agregar un encabezado de cookie a sus solicitudes.
Para almacenar y enviar su ID de sesión, use las clases Cookie
y CookieContainer
para almacenarlas y luego asegúrese de enviar sus cookies con cada solicitud.
El siguiente ejemplo muestra cómo hacerlo. El CookieContainer, 'cookieJar
' se puede compartir en múltiples dominios y solicitudes. Una vez que lo agregue a un objeto de solicitud, la referencia al mismo también se agregará al objeto de respuesta cuando se devuelva la respuesta.
CookieContainer cookieJar = new CookieContainer();
var request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
request.CookieContainer = cookieJar;
var response = request.GetResponse();
foreach (Cookie c in cookieJar.GetCookies(request.RequestUri))
{
Console.WriteLine("Cookie['" + c.Name + "']: " + c.Value);
}
La salida de este código será:
Cookie['PREF']: ID=59e9a22a8cac2435:TM=1246226400:LM=1246226400:S=tvWTnbBhK4N7Tlpu
¡Muchas gracias! ¡Esto realmente me ayudará! ¡Hurra! :) –
¡Implementé esto y funciona! Muchas gracias. –
+1 ¡Gracias por la ayuda tan apreciada! No estaba esperando analizar manualmente los encabezados HTTP :) – jv42
La respuesta de Dan Herbert me ayudó realmente. Aprecio tu ayuda.
Solo quiero publicar mi uso, espero que ayude a alguien en algún momento. Mi requisito es que tengo que devolver las cookies de la primera respuesta http post a la segunda solicitud posterior a http.
primero:
CookieContainer cookieJar = new CookieContainer();
request.CookieContainer = cookieJar;
....
CookieCollection setCookies = cookieJar.GetCookies(request.RequestUri);
segundo:
CookieContainer cc = new CookieContainer();
cc.Add(setCookies);
request.CookieContainer = cc;
zumbido puedo estar equivocado, pero de lo que estoy observando
últimamenteGalletas de una primera respuesta, no incluya el " establecer cookie 'como cookies que vienen en el encabezado (por ejemplo, una identificación de sesión ...) en el caso de un estado 302 (redirigir)
Si el autofollowredirect se establece en true, la cookie configurada se procesa y la solicitud subsiguiente, que se realiza automáticamente, incluirá aquellas cookies definidas por la cookie establecida en la primera llamada
Si autofollowredirect está configurado como falso, entonces La primera solicitud no obtiene las cookies ubicadas por la cookie configurada, y supongo que este es también mi queston si alguien sabe que la única forma de tener esas cookies en la próxima solicitud es analizar las cookies establecidas.
Tuve problemas con un redireccionamiento 302 y establecí AllowAutoRedirect = false. Esto me dio una respuesta de "esta página se ha movido", pero luego pasé las cookies y redirigí a la página a la que quería ir en primer lugar. – Daryl
[Según RFC 6265] (http://tools.ietf.org/html/rfc6265#section-3) Los agentes de usuario PUEDEN ignorar los encabezados de Set-Cookie contenidos en las respuestas con códigos de estado de 100 niveles, pero DEBEN procesar Set-Cookie encabezados incluidos en otras respuestas (incluidas las respuestas con 400- y códigos de estado de 500 niveles). – Snives
que tienen el mismo problema (con Amazon) utilizo la siguiente expresión regular:
string regexp = "(?<name>[^=]+)=(?<val>[^;]+)[^,]+,?";);
MatchCollection myMatchCollection = Regex.Matches(cookiesStr, regexp);
foreach (Match myMatch in myMatchCollection)
{
string cookieName = myMatch.Groups["name"].ToString();
string cookieVal = myMatch.Groups["val"].ToString();
Cookie cookie = new Cookie(cookieName, cookieVal);
cookies.Add(cookie);
}
Nota que sólo se preocupan por la cookie de nombre/valor ...
buena suerte Elia
Este es el tipo exacto de solución que estoy buscando (el objeto WebBrowser solo proporciona una cadena para la cookie). Sin embargo, su código no se compila. – Nuzzolilo
- 1. Cómo matar una sesión o ID de sesión (ASP.NET/C#)
- 2. cómo analizar la página devuelta html con jQuery.get()
- 3. Cómo generar una ID de sesión única en php
- 4. setcookie() de PHP no funciona
- 5. PHP setcookie() para dominios pero NO para los subdominios
- 6. Cómo analizar una cadena de cookies
- 7. php setcookie domain
- 8. php setcookie vs Zend_Http_Cookie
- 9. httpservletrequest - crear nueva sesión/cambiar sesión Id
- 10. almacenar ID de usuario en la sesión
- 11. obtener ID de sesión en ASP.Net
- 12. Recuperar ID de sesión con Spring Security
- 13. ¿Cómo puedo obtener el ID de sesión (Express) para una conexión websocket?
- 14. UTRAN Identidad de celda devuelta por getCid()
- 15. ¿Cómo puedo obtener ID de sesión en java
- 16. Accediendo $ _COOKIE inmediatamente después de setcookie()
- 17. Creación de una ID de correlación JMS
- 18. Leer ID de sesión usando Javascript
- 19. jMeter: Cómo simular muchos usuarios simultáneos que inician sesión con diferentes ID de inicio de sesión
- 20. Básico: ¿Cómo se crea la ID de la sesión?
- 21. Cómo iniciar sesión ID de sesión en el registro de acceso de WebLogic
- 22. Acceso a una matriz devuelta por una función
- 23. ¿Hay alguna forma de anular una variable booleana devuelta?
- 24. Cómo analizar/analizar simple código C/C++ de C# para obtener una lista de métodos
- 25. Lista nula devuelta desde la consulta de hibernación con el id. Integrado
- 26. Determinación del ID de la sesión de WebDriverJS
- 27. Enlace de la dirección IP con ID de sesión
- 28. Cómo analizar una cadena de lógica booleana en PHP
- 29. Authlogic accessing id de usuario en el objeto de sesión
- 30. Cómo hacer una solicitud de Ajax para iniciar sesión
No hay de qué! –