tmenier / Flurl

Fluent URL builder and testable HTTP client for .NET

Home Page:https://flurl.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

client.Configure in 4.0.0 version?

vManTech opened this issue · comments

How can i convert this my code to Flurl 4.0.x ?

IFlurlClient client = new FlurlClient("https://....");
client.Configure(settings =>
{
settings.HttpClientFactory = new ProxyHttpClientFactory(proxy);
});

Thank you !.

Please ask on Stack Overflow and I'll be happy to answer. You should include the definition of ProxyHttpClientFactory. I can assume what that might look like, but it's a class defined in your code, not Flurl, so it would be helpful to others to see it. Thanks.

I have the same question and I suspect I'm not the only one. I did not find it asked at StackOverflow, so I will post a question there, but it would be really helpful to have a sample in the documentation (and, yes, I saw the https://flurl.dev/docs/configuration/?#message-handlers sample, but it's not how we make a call, so need to find out how to transition from the @vManTech's code to v4).

Answered here. I think the confusion here might be that setting a proxy needs to happen via the new FlurlClientBuilder object now, rather than through FlurlClient directly. This is because in 4.0 the underlying HttpClient is always created/selected up front when a FlurlClient is created. That was a nice simplification and eliminated some quirks that existed in 3.x's lazy approach, but it also meant that once a FlurlClient is created, it's already too late to mess with message handlers.

@tmenier That's simpler than I thought. :-) Thanks a lot.

@tmenier I just tried your suggestion from the Stack Overflow answer and it does not work. The FlurlClientBuilder's Build method returns the IFlurlClient instance, but there are no methods defined on this interface to make HTTP calls other than SendAsync, so you cannot invoke PostJsonAsync, PatchJsonAsync, or other method in the IFlurlClient interface. Would you mind taking another look at this? Thanks.

You need to call Request() first.

Oh, man, so sorry for being a dummy. Thanks a lot for a quick response.