Estoy tratando de pasar por una solicitud de autenticación que imita la "solicitud de autenticación básica" que estamos acostumbrados a ver al configurar IIS para este comportamiento.
La URL es: https://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC=22&SC=1&ST=2
(advertencia: https!)
Este servidor se ejecuta bajo UNIX y Java como servidor de aplicaciones.
Este es el código que uso para conectarme a este servidor:
CookieContainer myContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC=22&SC=1&ST=2");
request.Credentials = new NetworkCredential(xxx,xxx);
request.CookieContainer = myContainer;
request.PreAuthenticate = true;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
(Copié esto de otra publicación en este sitio). Pero recibo esta respuesta del servidor:
La conexión subyacente se cerró: se produjo un error inesperado en un envío.
Creo que probé todas las tareas posibles que me ofrece mi conocimiento sobre C #, pero nada ...
c#
authentication
credentials
webrequest
Kenny Rullo
fuente
fuente
Respuestas:
También puede agregar el encabezado de autorización usted mismo.
Simplemente escriba el nombre "Autorización" y el valor "BASE64 básico ({NOMBRE DE USUARIO: CONTRASEÑA})"
Editar
Cambió la codificación de UTF-8 a ISO 8859-1 por ¿Qué codificación debo usar para la autenticación básica HTTP? y el comentario de Jeroen.
fuente
¡Finalmente lo entendí!
y esto es
GetCredential()
¡HURRA!
fuente
Si puede usar la
WebClient
clase, usar la autenticación básica se vuelve simple:fuente
Prueba esto:
fuente
Para aquellos que usan RestSharp , puede fallar cuando se usa SimpleAuthenticator (posiblemente debido a que no se usa ISO-8859-1 detrás de escena). Logré hacerlo enviando explícitamente los encabezados de autenticación básica:
fuente
El siguiente código resolverá la respuesta de json si se implementa la autenticación básica y el proxy. También se resolverá el problema de alojamiento IIS 7.5.
fuente
La especificación se puede leer como "ISO-8859-1" o "indefinido". Tu elección. Se sabe que muchos servidores usan ISO-8859-1 (nos guste o no) y fallarán cuando envíes algo más.
Para obtener más información y una propuesta para solucionar la situación, consulte http://greenbytes.de/tech/webdav/draft-reschke-basicauth-enc-latest.html
fuente
La siguiente construcción no funcionaba correctamente para mí:
He usado en su
CredentialCache
lugar:Sin embargo, si desea agregar múltiples credenciales de autenticación básicas (por ejemplo, si conoce la redirección), puede usar la siguiente función que he realizado:
Espero que ayude a alguien en el futuro.
fuente
Lo primero, para mí ServicePointManager.SecurityProtocol = SecurityProtocolType. Tls12 funcionó en lugar de Ssl3.
En segundo lugar, tuve que enviar la solicitud de autenticación básica junto con algunos datos (formulario urlencoded). Aquí está la muestra completa que funcionó perfectamente para mí, después de probar muchas soluciones.
Descargo de responsabilidad: el siguiente código es una mezcla de soluciones que se encuentran en este enlace y algunos otros enlaces de stackoverflow, gracias por la información útil.
fuente