tmenier / Flurl

Fluent URL builder and testable HTTP client for .NET
https://flurl.dev
MIT License
4.23k stars 387 forks source link

client.Configure in 4.0.0 version? #810

Closed vManTech closed 9 months ago

vManTech commented 9 months ago

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 !.

tmenier commented 9 months ago

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.

alekdavis commented 8 months ago

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).

alekdavis commented 8 months ago

@tmenier I asked on StackOverflow: https://stackoverflow.com/questions/78163497/how-to-specify-a-proxy-for-a-flurl-client-in-version-4-0-x

tmenier commented 8 months ago

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.

alekdavis commented 8 months ago

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

alekdavis commented 7 months ago

@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.

tmenier commented 7 months ago

You need to call Request() first.

alekdavis commented 7 months ago

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