la API REST de IBM RTC da un ejemplo de un script de shell para la autenticación con el servidor:C# - WebRequest HTTP POST con Cookie (puerto desde el guión rizo)
COOKIES=./cookies.txt
USER=my_user
PASSWORD=my_password
HOST="https://myJazzServer:9092/jazz"
curl -k -c $COOKIES "$HOST/authenticated/identity"
curl -k -L -b $COOKIES -c $COOKIES -d j_username=$USER -d j_password=$PASSWORD "$HOST/authenticated/j_security_check"
Esto funciona perfectamente, sin embargo necesito para autenticar con el servidor usando C#.
Hasta ahora tengo el siguiente, pero no está funcionando (no devuelve la página de autorización):
CookieContainer _cookie;
public string _RTC()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://myJazzServer.com:9092/jazz/authenticated/identity");
if (_cookie == null)
{
_cookie = new CookieContainer();
}
string a;
request.CookieContainer = _cookie;
using (var response = request.GetResponse())
{
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
a = sr.ReadToEnd();
}
}
byte[] data = (new ASCIIEncoding()).GetBytes("j_username=myUser&j_password=MyPass");
request = (HttpWebRequest)WebRequest.Create("https://myJazzServer.com:9092/jazz/authenticated/j_security_check");
request.Method = "POST";
request.ContentType = "text/html";
request.ContentLength = data.Length;
request.CookieContainer = _cookie;
Stream reqStream = request.GetRequestStream();
reqStream.Write(data,0,data.Length);
string b;
using (var response = request.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
b = reader.ReadToEnd();
}
}
}
¿Podría ser un poco más específico sobre lo que "no funciona"? ¿Recibes una excepción, no hay contenido en la respuesta, código de estado HTTP inesperado (por ejemplo, 404, 407, etc.) en la respuesta, etc.? – Nathan
@ Nathan, está devolviendo una página de autorización fallida, no puedo dar detalles porque lo que devuelve es un bootstrapper ajax con un método llamado authFailed (o algo por el estilo), por lo que no puedo obtener los detalles reales. –