https://github.com/soenneker/soenneker.extensions.httpclient
A collection of helpful HttpClient extension methods, like retry and auto (de)serialization
https://github.com/soenneker/soenneker.extensions.httpclient
client csharp dotnet extension extensions http httpclient httpclientextension polly retry
Last synced: 8 days ago
JSON representation
A collection of helpful HttpClient extension methods, like retry and auto (de)serialization
- Host: GitHub
- URL: https://github.com/soenneker/soenneker.extensions.httpclient
- Owner: soenneker
- License: mit
- Created: 2024-04-07T17:35:43.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2026-01-15T19:56:46.000Z (21 days ago)
- Last Synced: 2026-01-16T17:09:22.768Z (20 days ago)
- Topics: client, csharp, dotnet, extension, extensions, http, httpclient, httpclientextension, polly, retry
- Language: C#
- Homepage: https://soenneker.com
- Size: 3.91 MB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
[](https://www.nuget.org/packages/soenneker.extensions.httpclient/)
[](https://github.com/soenneker/soenneker.extensions.httpclient/actions/workflows/publish-package.yml)
[](https://www.nuget.org/packages/soenneker.extensions.httpclient/)
#  Soenneker.Extensions.HttpClient
### A collection of helpful HttpClient extension methods, like retry and auto (de)serialization
## Installation
```
dotnet add package Soenneker.Extensions.HttpClient
```
### SendToString()
```csharp
var request = new HttpRequestMessage(HttpMethod.Get, "https://api.example.com/data");
var responseContent = await _httpClient.SendToString(request);
```
### SendWithError()
```csharp
var request = new HttpRequestMessage(HttpMethod.Get, "https://api.example.com/data");
MySuccessResponse? successResponse, MyErrorResponse? errorResponse = await _httpClient.SendWithError(request);
```
### TrySend()
```csharp
var request = new HttpRequestMessage(HttpMethod.Get, "https://api.example.com/data");
bool successful, HttpResponseMessage? response = await _httpClient.TrySend(request);
```
### SendWithRetryToType()
```csharp
var requestData = new { Name = "John Doe" };
var response = await _httpClient.SendWithRetryToType(
HttpMethod.Post, // HTTP Method
"https://api.example.com/data", // URI
requestData, // Request body
numberOfRetries: 3, // Retry 3 times
logger: _logger, // Optional logger
baseDelay: TimeSpan.FromSeconds(2), // Exponential backoff
log: true, // Enable logging
cancellationToken: cancellationToken // Cancellation token
);
```
... and more