POST a página devuelta por WebResponse
-
21-09-2019 - |
Pregunta
Estoy utilizando WebRequest para publicar en una página de acceso que me redirige a la página que realmente necesita para su anuncio.
¿Cómo puedo publicar en esta página que he sido redirigido a? Aquí está el código:
***** ***** NUEVO MATERIAL DE
Aquí es lo que sucede después de que envío a la página de inicio de sesión: GET /config/validate?.src=flickr&.pc=5134&.scrumb=6l14Ni2Pz3j&.pd=c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-&.intl=us&.done=http%3A%2F%2Fwww.flickr.com%2Fsignin % 2Fyahoo% 2F% 3Fredir% 3D% 252Fpeople% 252Flindieb68% 252Frelationship% 252F
GET / signin / yahoo /? = Redir% 2Fpeople% 2Flindieb68% 2Frelationship%
GET /cookie_check.gne?pass=%2Fpeople%2Flindieb68%2Frelationship%2F&fail=register_cookies.gne
GET / personas / lindieb68 / relación /
El último es donde tengo que hacer clic en un botón. ¿Debo pasar por todas estas obtiene y recoger las cookies? Voy a intentarlo después de la cena y le hará saber. Siento que esto va a funcionar. Voy a actualizar en un poco.
private CookieContainer LoginYahoo(CookieContainer cookies)
{
string appURL = "https://login.yahoo.com/config/login?.src=flickr&.pc=5134&.scrumb=0&.pd=c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-&.intl=us&.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%2Fvalidate%3F.src%3Dflickr%26.pc%3D5134%26.scrumb%3D0%26.pd%3Dc%253DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-%26.intl%3Dus%26.done%3Dhttp%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253D%25252Fpeople%25252Flindieb68%25252Frelationship%25252F&rl=1";
string strPostData = ".tries=1&.src=flickr&.md5=&.hash=&.js=&.last=&promo=&.intl=us&.bypass=&.partner=&.u=0delt5h5l4df0&.v=0&.challenge=3DZF0DFFqdE0m.9MWnCq6LjUZ9gV&.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=1&.chkP=Y&.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%2Fvalidate%3F.src%3Dflickr%26.pc%3D5134%26.scrumb%3D0%26.pd%3Dc%253DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-%26.intl%3Dus%26.done%3Dhttp%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253D%25252Fpeople%25252Flindieb68%25252Frelationship%25252F&.pd=flickr_ver%3D0%26c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-%26ivt%3D%26sg%3D&login=loginName&passwd=Password&.persistent=y&.save=Sign+In";
// Setup the http request.
HttpWebRequest wrWebRequest = WebRequest.Create(appURL) as
HttpWebRequest;
wrWebRequest.Method = "POST";
wrWebRequest.ContentLength = strPostData.Length;
wrWebRequest.ContentType = "application/x-www-form-urlencoded";
CookieContainer cookieContainer = cookies;
wrWebRequest.CookieContainer = cookieContainer;
// Post to the login form.
StreamWriter swRequestWriter = new
StreamWriter(wrWebRequest.GetRequestStream());
swRequestWriter.Write(strPostData);
swRequestWriter.Close();
// Get the response.
HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
// Read the response
StreamReader srResponseReader = new
StreamReader(hwrWebResponse.GetResponseStream());
string strResponseData = srResponseReader.ReadToEnd();
srResponseReader.Close();
//YOU ARE NOW LOGGED IN TO YAHOO!
//NEED TO POST AGAIN TO WHAT hwrWebResponse RETURNS
ShowInBrowser(strResponseData);
return cookieContainer;
}
Solución
Recoge todas las cookies de las respuestas anteriores (login) como al menos uno de ellos será el cookie que le dice a Yahoo que ya ha iniciado la sesión. A continuación, incluir las galletas con su posterior petición de éstos a la página de destino, o cualquier otra interacción con Yahoo.
Editar:. Ver este artículo para obtener un ejemplo de código completo para la recogida y reutilización de las galletas
http://blogs.msdn.com/dgorti/archive/ 2005/08/16 / 452347.aspx
Otros consejos
Conjunto AllowAutoRedirect true en su httpwebrequest ejemplo.
Esto se está complicando.
La respuesta corta parece ser Recoger las cookies. Por alguna razón por la que fallan en hacerlo sin embargo.