Hacer una llamada CURL en C#
-
Use
HttpWebRequest
oHttpWebResponse
para hacer una llamada CURL enC#
-
Use
WebClient
para hacer una llamada CURL enC#
-
Use
HttpClient
para hacer una llamada CURL enC#
- Conclusión
La URL del cliente (cURL) es el estándar de facto para los documentos de la API en C#. Requiere conversión de un formato a otro.
Por lo tanto, transformar JSON en una clase C# es un enfoque razonablemente popular. El objeto de respuesta de la web o del host también se convierte en una clase de C# para que sea más fácil de usar para los desarrolladores.
Este artículo analizará tres enfoques para realizar una llamada cURL en C#.
Cree una comunicación con el servidor especificando la ubicación y los datos que desea enviar usando cURL en C#. Como la URL sigue a cada comando de cURL, siempre recupera algunos datos y devuelve la fuente HTML para una cURL.
cURL es altamente portátil y compatible con casi todos los sistemas operativos y dispositivos conectados. En C#, cURL es útil para probar puntos finales y proporciona detalles de lo que se envió o recibió exactamente, lo que es bueno para el registro de errores y la depuración.
Dado que cURL usa libcurl
, es compatible con la misma variedad de protocolos de Internet comunes que admite libcurl
.
Use HttpWebRequest
o HttpWebResponse
para hacer una llamada CURL en C#
La clase HttpWebRequest
soporta los métodos y propiedades definidos en WebRequest
. Sus propiedades y métodos adicionales permiten a los usuarios interactuar directamente con los servidores mediante HTTP.
Utilice el método WebRequest.Create
para inicializar nuevos objetos HttpWebRequest
. Utilice el método GetResponse
para realizar una solicitud síncrona al recurso especificado en la propiedad RequestUri
.
Devuelve un HttpWebResponse
que contiene el objeto de respuesta. En el caso de un objeto de respuesta cerrado, se fortalecerán los datos restantes.
Es una solicitud de mantenimiento de vida o canalizada; solo se necesita recibir una pequeña cantidad de datos en intervalos cortos. En C#, el marco .NET incluye una nueva función de seguridad que bloquea los algoritmos de cifrado y hash inseguros para las conexiones y los objetivos que obtienen un comportamiento más seguro de forma predeterminada.
// create a separate class
// Include the `System.Net` and `System.IO` into your C# project and install NuGet `Newtonsoft.Json`
// package before executing the C# code.
using System.Net;
using System.IO;
using Newtonsoft.Json;
namespace cURLCall {
public class gta_allCustomersResponse {
public static void gta_AllCustomers() {
var httpWebRequest = (HttpWebRequest)WebRequest.Create(
"https://api.somewhere.com/desk/external_api/v1/customers.json");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Accept = "*/*";
httpWebRequest.Method = "GET";
httpWebRequest.Headers.Add("Authorization", "Basic reallylongstring");
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
gta_allCustomersResponse answer =
JsonConvert.DeserializeObject<gta_allCustomersResponse>(streamReader.ReadToEnd());
// return answer;
}
}
}
}
Llame al método gta_AllCustomers()
de la clase gta_allCustomersResponse
en el formulario principal para realizar una llamada cURL.
using static cURLCall.gta_allCustomersResponse;
gta_AllCustomers();
El HttpWebResponse
admite usuarios específicos de HTTP de las propiedades y métodos de la clase WebResponse
para realizar una llamada cURL en C#. Cree una instancia de la clase HttpWebResponse
y cierre la respuesta llamando a los métodos Stream.Close
o HttpWebResponse.Close
y libere la conexión para reutilizarla una vez que la respuesta se reciba correctamente.
Use WebClient
para hacer una llamada CURL en C#
La clase WebClient
proporciona métodos de transformación o recepción de datos sobre el recurso local o de Internet identificado por un URI. Utiliza la clase WebRequest
para proporcionar acceso a los recursos.
El WebClient
es una abstracción de alto nivel construida sobre HttpWebRequest
para simplificar las tareas más comunes para realizar una llamada cURL en C#.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using Newtonsoft.Json;
namespace cURLCall {
public static class StaticItems {
public static string EndPoint = "http://localhost:8088/api/";
}
public class CityInfo {
public int CityID { get; set; }
public int CountryID { get; set; }
public int StateID { get; set; }
public string Name { get; set; }
public decimal Latitude { get; set; }
public decimal Longitude { get; set; }
}
public class receiveData {
public List<CityInfo> CityGet() {
try {
using (WebClient webClient = new WebClient()) {
webClient.BaseAddress = StaticItems.EndPoint;
var json = webClient.DownloadString("City/CityGetForDDL");
var list = JsonConvert.DeserializeObject<List<CityInfo>>(json);
return list.ToList();
}
} catch (WebException ex) {
throw ex;
}
}
}
public class ReturnMessageInfo {
public ReturnMessageInfo CitySave(CityInfo city) {
ReturnMessageInfo result = new ReturnMessageInfo();
try {
using (WebClient webClient = new WebClient()) {
webClient.BaseAddress = StaticItems.EndPoint;
var url = "City/CityAddUpdate";
webClient.Headers.Add(
"user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
string data = JsonConvert.SerializeObject(city);
var response = webClient.UploadString(url, data);
result = JsonConvert.DeserializeObject<ReturnMessageInfo>(response);
return result;
}
} catch (Exception ex) {
throw ex;
}
}
}
}
Clases como FileWebRequest
y FtpWebRequest
heredan de WebRequest
. En general, puede utilizar WebRequest
para realizar una solicitud y convertir la devolución en HttpWebRequest
, FileWebRequest
o FtpWebRequest
, según su solicitud.
Es uno de los métodos ideales para realizar una llamada cURL al proporcionar operaciones comunes para enviar y recibir datos de un recurso identificado por un URI.
Use HttpClient
para hacer una llamada CURL en C#
La clase HttpClient
está diseñada para ser mucho mejor que cualquier otra clase que ofrezca métodos para enviar solicitudes HTTP y recibir respuestas HTTP de un recurso identificado por un URI. Su instancia es una colección de configuraciones aplicadas a todas las solicitudes que actúan como una sesión para enviar solicitudes HTTP.
Además, cada instancia de HttpClient
usa su conjunto de conexiones para cada llamada cURL.
En C#, HttpClient
está destinado a ser instanciado una vez y reutilizado a lo largo de la vida de una aplicación. Como una API de nivel superior, HttpClient
envuelve la funcionalidad de nivel inferior en cada plataforma disponible (incluidas las plataformas donde se ejecuta).
Además, el comportamiento de esta clase se puede personalizar para obtener un beneficio de rendimiento significativo, especialmente para las solicitudes HTTP. Las opciones de configuración de tiempo de ejecución en .NET pueden configurar HttpClient
para personalizar su comportamiento.
using System;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using Newtonsoft.Json;
class UserInfo {
public string UserName { get; set; }
public string Email { get; set; }
public override string ToString() {
return $"{UserName}: {Email}";
}
}
class cURLCall {
static async Task Main(string[] args) {
var user = new UserInfo();
user.UserName = "My Name";
user.Email = "myname4321@exp.com";
var json = JsonConvert.SerializeObject(person);
var data = new StringContent(json, Encoding.UTF8, "application/json");
var url = "https://httpbin.org/post";
var client = new HttpClient();
var response = await client.PostAsync(url, data);
string result = response.Content.ReadAsStringAsync().Result;
// processed user info thorugh HttpClient
Console.WriteLine(result);
}
}
La clase HttpClient
tiene un mejor soporte para manejar diferentes tipos de respuesta y también ofrece un mejor soporte para operaciones asincrónicas sobre las opciones mencionadas anteriormente.
Conclusión
Este artículo le ha enseñado tres métodos útiles para realizar una llamada cURL en C#. Ahora puede usar el código C# para realizar llamadas cURL para probar sus terminales y solucionar problemas de sus aplicaciones C#.
Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.
GitHub