c# rest jira

Login JIRA Rest API usando C#



(2)

Escribí el código de C # debajo para iniciar sesión en JIRA Rest API:

var url = new Uri("http://localhost:8090/rest/auth/latest/session?os_username=tempusername&os_password=temppwd"); var request = WebRequest.Create(url) as HttpWebRequest; if (null == request) { return ""; } request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = 200; request.KeepAlive = false; using (var response = request.GetResponse() as HttpWebResponse) { }

Cuando ejecuto esto, la aplicación simplemente sigue ejecutándose sin devolver ninguna respuesta. Indique si esta es la forma correcta de llamar a JIRA Login mediante REST API


Para la autenticación básica, debe enviar el nombre de usuario y la contraseña en una codificación base64. Las pautas se pueden encontrar en los ejemplos de API en la página de desarrolladores de atlassians: https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Basic+Authentication , si lo hace en C # necesita envíe los datos codificados en el encabezado en el siguiente formato:

"Autorización: Básica [CREDENCIALES CODIFICADAS]"

Aquí hay un ejemplo simple:

public enum JiraResource { project } protected string RunQuery( JiraResource resource, string argument = null, string data = null, string method = "GET") { string url = string.Format("{0}{1}/", m_BaseUrl, resource.ToString()); if (argument != null) { url = string.Format("{0}{1}/", url, argument); } HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.ContentType = "application/json"; request.Method = method; if (data != null) { using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) { writer.Write(data); } } string base64Credentials = GetEncodedCredentials(); request.Headers.Add("Authorization", "Basic " + base64Credentials); HttpWebResponse response = request.GetResponse() as HttpWebResponse; string result = string.Empty; using (StreamReader reader = new StreamReader(response.GetResponseStream())) { result = reader.ReadToEnd(); } return result; } private string GetEncodedCredentials() { string mergedCredentials = string.Format("{0}:{1}", m_Username, m_Password); byte[] byteCredentials = UTF8Encoding.UTF8.GetBytes(mergedCredentials); return Convert.ToBase64String(byteCredentials); }

(JiraResource es solo una enumeración que uso para decidir qué parte de la API usar)

¡Espero que esto sea de ayuda!


Aquí hay una solución más simple que funciona como se requiere:

var mergedCredentials = string.Format("{0}:{1}", username, password); var byteCredentials = Encoding.UTF8.GetBytes(mergedCredentials); var encodedCredentials = Convert.ToBase64String(byteCredentials); using (WebClient webClient = new WebClient()) { webClient.Headers.Set("Authorization", "Basic " + encodedCredentials); return webClient.DownloadString(url); }