asp.net curl web httpwebrequest

curl Solicitud con ASP.NET



web httpwebrequest (1)

He leído algunas otras publicaciones en Stack pero no puedo hacer que esto funcione. Funciona bien en mi cuando ejecuto el comando curl en git en mi máquina de Windows, pero cuando lo convierto en asp.net no funciona:

private void BeeBoleRequest() { string url = "https://mycompany.beebole-apps.com/api"; WebRequest myReq = WebRequest.Create(url); string username = "e26f3a722f46996d77dd78c5dbe82f15298a6385"; string password = "x"; string usernamePassword = username + ":" + password; CredentialCache mycache = new CredentialCache(); mycache.Add(new Uri(url), "Basic", new NetworkCredential(username, password)); myReq.Credentials = mycache; myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword))); WebResponse wr = myReq.GetResponse(); Stream receiveStream = wr.GetResponseStream(); StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8); string content = reader.ReadToEnd(); Response.Write(content); }

Esta es la API BeeBole. Es bastante directo. http://beebole.com/api pero recibo el siguiente error de 500 cuando ejecuto lo anterior:

El servidor remoto devolvió un error: (500) Error interno del servidor.


El método HTTP predeterminado para WebRequest es GET. Intenta configurarlo en POST, ya que eso es lo que espera la API

myReq.Method = "POST";

Supongo que estás publicando algo. Como prueba, voy a publicar los mismos datos de su ejemplo curl.

string url = "https://YOUR_COMPANY_HERE.beebole-apps.com/api"; string data = "{/"service/":/"absence.list/", /"company_id/":3}"; WebRequest myReq = WebRequest.Create(url); myReq.Method = "POST"; myReq.ContentLength = data.Length; myReq.ContentType = "application/json; charset=UTF-8"; string usernamePassword = "YOUR API TOKEN HERE" + ":" + "x"; UTF8Encoding enc = new UTF8Encoding(); myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(enc.GetBytes(usernamePassword))); using (Stream ds = myReq.GetRequestStream()) { ds.Write(enc.GetBytes(data), 0, data.Length); } WebResponse wr = myReq.GetResponse(); Stream receiveStream = wr.GetResponseStream(); StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8); string content = reader.ReadToEnd(); Response.Write(content);