WebServiceClientManager 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package WebServiceClientManager --version 1.0.1
                    
NuGet\Install-Package WebServiceClientManager -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WebServiceClientManager" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WebServiceClientManager" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="WebServiceClientManager" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WebServiceClientManager --version 1.0.1
                    
#r "nuget: WebServiceClientManager, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WebServiceClientManager@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WebServiceClientManager&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=WebServiceClientManager&version=1.0.1
                    
Install as a Cake Tool

WebServiceClientManager

La librería WebServiceClientManager proporciona una interfaz para realizar peticiones HTTP de manera sencilla a servicios web, facilitando la gestión de tokens de autorización y ofreciendo métodos para realizar operaciones comunes como GET, POST, PUT, DELETE y PATCH.

Instalación

Para instalar la librería, puedes utilizar el siguiente comando en tu terminal:

dotnet add package WebServiceClientManager

Clase Post

La clase Post representa un objeto que podría ser utilizado en operaciones como POST para enviar datos al servidor. En este contexto, estaremos trabajando con el API de pruebas https://jsonplaceholder.typicode.com y la clase Post estará alineada con la estructura de datos proporcionada por ese API.

public class Post 
{
    public int userId { get; set; }
    public int id { get; set; }
    public string title { get; set; }
    public string body { get; set; }
}

Uso Básico - Sincrónico

GET para un solo registro

// Instanciación del Cliente
var webServiceClient = new WebServiceClient("https://jsonplaceholder.typicode.com");

// Realizar una Petición GET para un solo registro
var response = webServiceClient.Get<Post>("/posts/1");

if (response.IsSuccess)
{
    // Accede a la respuesta exitosa
    var responseData = response.Content;
    // Haz algo con los datos
}

GET para una lista de registros

// Instanciación del Cliente
var webServiceClient = new WebServiceClient("https://jsonplaceholder.typicode.com");

// Realizar una Petición GET para una lista de registros
var response = webServiceClient.Get<List<Post>>("/posts");

if (response.IsSuccess)
{
    // Accede a la respuesta exitosa
    var responseData = response.Content;
    // Haz algo con los datos
}

POST

/// Instanciación del Cliente
var webServiceClient = new WebServiceClient("https://jsonplaceholder.typicode.com");

// Datos a enviar
var postData = new Post { userId = 1, title = "Nuevo Post", body = "Contenido del post" };

// Realizar una Petición POST
var response = webServiceClient.Post<Post>("/posts", postData, EContentType.application_json);

if (response.IsSuccess)
{
    // Accede a la respuesta exitosa
    var responseData = response.Content;
    // Haz algo con los datos
}

Uso Básico - Asincrónico

GET para un solo registro

// Instanciación del Cliente
var webServiceClient = new WebServiceClient("https://jsonplaceholder.typicode.com");

// Realizar una Petición GET Asincrónica para un solo registro
var response = await webServiceClient.GetAsync<Post>("/posts/1");

if (response.IsSuccess)
{
    // Accede a la respuesta exitosa
    var responseData = response.Content;
    // Haz algo con los datos
}

GET para una lista de registros

// Instanciación del Cliente
var webServiceClient = new WebServiceClient("https://jsonplaceholder.typicode.com");

// Realizar una Petición GET Asincrónica para una lista de registros
var response = await webServiceClient.GetAsync<List<Post>>("/posts");

if (response.IsSuccess)
{
    // Accede a la respuesta exitosa
    var responseData = response.Content;
    // Haz algo con los datos
}

POST

// Instanciación del Cliente
var webServiceClient = new WebServiceClient("https://jsonplaceholder.typicode.com");

// Datos a enviar
var postData = new Post { userId = 1, title = "Nuevo Post", body = "Contenido del post" };

// Realizar una Petición POST Asincrónica
var response = await webServiceClient.PostAsync<Post>("/posts", postData, EContentType.application_json);

if (response.IsSuccess)
{
    // Accede a la respuesta exitosa
    var responseData = response.Content;
    // Haz algo con los datos
}

Uso de Bearer Token

La librería WebServiceClientManager facilita la inclusión de tokens Bearer en las peticiones HTTP. Para utilizar un token Bearer, simplemente sigue estos pasos:

  1. Instancia del Cliente: Crea una instancia de WebServiceClient con la URL base del servicio.
  2. Establecer el Token Bearer: Antes de realizar cualquier petición, utiliza el método SetAuthorizationToken para establecer el token Bearer. Este método configura automáticamente el encabezado de autorización en las solicitudes subsiguientes.
var webServiceClient = new WebServiceClient("https://jsonplaceholder.typicode.com");
var bearerToken = "tu_token_de_acceso";  // Reemplaza con tu propio token
webServiceClient.SetAuthorizationToken(bearerToken);
  1. Realizar la Petición: Luego de establecer el token Bearer, puedes realizar tus solicitudes HTTP de manera normal. El token se incluirá automáticamente en el encabezado de autorización de cada solicitud.
var response = webServiceClient.Get<Post>("/posts/1");

Autenticación y uso del Token

Realizar un Login y obtener un token

// Instanciación del Cliente para la autenticación
var authClient = new WebServiceClient("https://tu-servicio-auth.com");

// Datos de login
var loginData = new
{
    username = "tu_usuario",
    password = "tu_contraseña"
};

// Realizar una petición POST para el login
var authResponse = authClient.Post<dynamic>("/login", loginData, EContentType.application_json);

if (authResponse.IsSuccess)
{
    // Obtener el token de la respuesta
    var accessToken = authResponse.Content.access_token;

    // Instanciación del Cliente principal o reutilización de la instancia existente con el token obtenido
    var webServiceClient = new WebServiceClient("https://tu-servicio-api.com");
    webServiceClient.SetAuthorizationToken(accessToken);

    // Ahora puedes usar el mismo cliente para realizar otras solicitudes con el token de acceso
    var response = webServiceClient.Get<Post>("/posts/1");

    if (response.IsSuccess)
    {
        // Accede a la respuesta exitosa
        var responseData = response.Content;
        // Haz algo con los datos
    }
    else
    {
        // Manejar error en la solicitud subsiguiente
    }
}
else
{
    // Manejar error en la autenticación
}

En este ejemplo, se ha agregado un comentario para resaltar la reutilización de la instancia del cliente (webServiceClient). Este enfoque puede mejorar la eficiencia y el rendimiento de tu aplicación al evitar la creación innecesaria de nuevas instancias del cliente al hacer solicitudes subsiguientes al mismo API.

Métodos adicionales

  • Put, Delete, Patch: Métodos para realizar operaciones PUT, DELETE y PATCH respectivamente.
  • Métodos Async: Versiones asincrónicas de los métodos mencionados para operaciones asíncronas.
  • GenerateQueryParamsFromObject: Genera una cadena de consulta a partir de un objeto.
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 197 1/15/2024
1.0.1 165 11/9/2023
1.0.0 128 11/7/2023