Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 3103|Resposta: 0

[Fonte] .NET/C# HttpClient análise simples do código-fonte

[Copiar link]
Publicado em 24/06/2023 13:05:41 | | | |
Requisitos: Em arquiteturas de microsserviços, chamadas entre serviços frequentemente usam o protocolo HTTP, geralmente usando a classe HttpClient para fazer requisições HTTP ou utilizá-laRefit.HttpClientFactory、WebApiClientCoreBibliotecas de terceiros baseadas em encapsulamento HttpClient.

Para mais informações sobre o uso do HttpClient, consulte a:O login do hiperlink está visível.

Código-fonte HttpClient:O login do hiperlink está visível.

No construtor sem parâmetros HttpClient, o objeto HttpClientHandler é instanciado por padrão, e o HttpClientHandler herda e implementa a classe abstrata HttpMessageHandler.Fluxo padrão: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



De acordo com análise do código-fonte, o objeto herdado do HttpMessageHandler é uma implementação concreta do HttpClient enviando requisições HTTP. O HttpClient vaiHttpRequestMessageO objeto é passado e então recebidoHttpResponseMessageObject retorna conteúdo.

Tente criar uma nova classe TestHttpHandler, herdar a classe de abstração HttpMessageHandler e implementar o método SendAsync, e então instancia-la no construtor HttpClient, com o seguinte código:

Como mostrado abaixo:



Embora chame o HttpClient para enviar uma requisição GET, a implementação específica do método SendAsync não envia uma requisição HTTP, e não há fluxo de rede, entãoVocê pode desconectar o cabo de rede e o programa funcionará normalmente

emAo usar um objeto HttpClient, o socket subjacente não é liberado imediatamente, que pode causar problemas de exaustão do soquete. A Microsoft está ciente desse problema e recomenda o uso do IHttpClientFactory em ASP.NET projetos Core para criar objetos HttpClient.O IHttpClientFactory agrupa instâncias HttpMessageHandler criadas em fábrica em um pool para reduzir o consumo de recursos. Ao criar uma nova instância HttpClient, pode reutilizar a instância HttpMessageHandler no pool(se o período de sobrevivência não tiver expirado).

ASP.NET Core (XV) usa HttpClient para enviar requisições HTTP
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory para .NET:O login do hiperlink está visível.

ASP.NET Core tem o conceito de middleware pipeline,Na verdade, o HttpClient também possui o conceito de middleware pipeline com a ajuda do Delegating Handler, como mostrado na figura abaixo:



Ao usar esse recurso, podemos interceptar requisições e respostas, como aumentar a autenticação de token antes das requisições, registrar o tempo necessário para requisições e respostas, e envolver dados de resposta.

Basta herdar a classe DelegingHandler e sobrescrever o método SendAsync.



Gravar requisições HTTP leva tempo, e o código é o seguinte:

Ligue para o IHttpClientFactory para criar um HttpClient e enviar uma solicitação, como mostrado na imagem a seguir:



(Fim)




Anterior:O hook ajax para desenvolvimento web intercepta todas as solicitações XMLHttpRequest
Próximo:.NET/C# parâmetro do método NULL
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com