如何为许多不具有相同基本 URI 的请求重用 RestSharp RestClient 实例?

问题描述 投票:0回答:1

RestSharp 文档

我可以使用在没有任何基本 URI 的情况下创建的

HttpClient
实例,并在
HttpRequestMessage
中添加所有详细信息以重用
HttpClient
实例。

class Example
{
    private static readonly HttpClient client;

    static Example()
    {
        client = new(new SocketsHttpHandler
        {
            PooledConnectionLifetime = TimeSpan.FromMinutes(15)
        });
    }

    private void MakeHttpRequest() {
        var httpRequestMessage = new HttpRequestMessage()
        {
            Method = HttpMethod.Get,
            RequestUri = "www.example.com/uri"
        };
        var response = client.GetAsync(httpRequestMessage).Result;
        //rest  of the code
    }
}

我怎样才能在

RestSharp
RestClient
中做到这一点。如何在
RestRequest
对象本身中发送完整的请求 URI?

RestRequest
构造函数似乎只是在寻找相对URI

/// <summary>
/// Constructor for a rest request to a relative resource URL and optional method
/// </summary>
/// <param name="resource">Resource to use</param>
/// <param name="method">Method to use (defaults to Method.Get></param>
public RestRequest(string? resource, Method method = Method.Get) : this() {
    Resource = resource ?? "";
    Method   = method;
    //rest of the code
}
c# .net dotnet-httpclient restsharp
1个回答
0
投票

您可以通过将

HttpClient
传递给
RestClient
构造函数来做到这一点。
请确保您没有设置
BaseUrl
否则它将无法工作

var httpClient = new HttpClient();
var client = new RestClient(httpClient);

var request1 = new RestRequest("https://httpbin.org/status/200");
var response1 = client.Execute(request1);
Console.WriteLine(response1.StatusCode); //OK

var request2 = new RestRequest("https://postman-echo.com/status/201");
var response2 = client.Execute(request2);
Console.WriteLine(response2.StatusCode); //Created

Dotnet 小提琴:https://dotnetfiddle.net/Cg6wlh

© www.soinside.com 2019 - 2024. All rights reserved.