


Schließen Sie die Rekonstruktion und Kapselung des zugrunde liegenden HttpClient von OSS.Http ab und unterstützen Sie die detaillierte Einführung der Standardbibliothek.
Die Unterstützung des OSS.Http-Projekts für die .Net Standard-Standardbibliothek wurde migriert, und die beiden Klassenbibliotheken der niedrigsten Ebene in der OSS-Open-Source-Reihe verfügen bereits über die Möglichkeit, laufzeitübergreifend zu unterstützen. Dieser Artikel enthält hauptsächlich 1. Einführung in HttpClient, 2. Rekonstruktionsideen und 3. Probleme, auf die leicht zu stoßen ist. Es hat einen sehr guten Referenzwert, werfen wir einen Blick mit dem Editor unten
Die Unterstützung des OSS.Http-Projekts für die .Net Standard-Standardbibliothek wurde migriert, und die beiden Klassenbibliotheken der untersten Ebene des OSS wurden migriert Open-Source-Serien sind bereits verfügbar. Die Möglichkeit zur laufzeitübergreifenden Unterstützung. Denn die OSS.Http-Klassenbibliothek ist ein leichtgewichtiges HTTP-Anfrage-Framework, das ich vor einigen Jahren basierend auf den Ideen von RestSharp fertiggestellt habe. Da die unterste Ebene HttpWebRequest schon seit langem verwendet, wird es dieses Mal im Grunde komplett überarbeitet. Dieser Artikel enthält hauptsächlich 1. Einführung in HttpClient, 2. Refactoring-Ideen und 3. Probleme, auf die man leicht stoßen kann.
1. Grundlegende Einführung in httpclient
HttpClient sollte eine neue Funktion sein, auf die in der .net-Framework-Version 4.5 verwiesen wird Ersteres ist einfacher und klarer und das Wichtigste ist, dass es die .net-Standard-API vollständig unterstützt. Dies ist auch ein wichtiger Grund, warum ich mich dafür entschieden habe.
HttpClient hat große strukturelle Anpassungen vorgenommen und ist eine vollständig asynchrone Implementierung. Man kann sagen, dass es die asynchrone Unterstützung von der untersten Ebene aus abgeschlossen hat:
1. HtttpRequestMessage
Grundlegende Informationen der Anfrage, Anfrageadresse, Anfrageaktion usw. Dieser Wert wird als Parameter in der Methode von HttpClient übergeben, die eine Anfrage initiiert , und entspricht dem Inhaltstext als Antwort auf die HttpResponseMessage
2 HttpContent
Anfrage, hauptsächlich einschließlich des spezifischen Inhalts der Anfrage, des Inhaltstyps, der Inhaltslänge usw. Es ist ein Attribut von HtttpRequestMessage. Beide enthalten das Headers-Attribut, aber der Umfang ist unterschiedlich. Dies ist ein Ort, an dem es leicht zu Verwirrung und Fehlern kommt einfache Klassifizierung:
Der Header von HttpRequestMessage (HttpRequestHeaders) ist hauptsächlich Es ist das Attribut der Anforderung, wie Accept, UserAgent, AcceptEncoding und andere grundlegende Attribute von http-Links.
Die Header von HttpContent (HttpContentHeaders) sind hauptsächlich Attribute des aktuellen Anforderungsinhalts, hauptsächlich einschließlich: Zulassen, Inhaltskodierung, Inhaltslänge, Inhaltstyp, Ablaufdatum, Zuletzt geändert usw. Weitere Informationen finden Sie unter Sehen Sie sich die offizielle Klassenbibliothek an.
Das HttpContent-System bietet mehrere Standardimplementierungen, hauptsächlich wie folgt:
3. HttpMessageHandler
Die Hauptfunktion dieser Klasse besteht darin, Aktionen zur Verarbeitung von Anforderungsinhalten usw. zu definieren, z. B. ob die Umleitung unterstützt wird, ob Cookies verwendet werden können, Proxy-Proxy usw. Dieser Wert ist auf Systemeinstellungen ausgerichtet Über den HttpClient-Konstruktor wird die vom System standardmäßig bereitgestellte Unterklasse HttpClientHandler hinzugefügt.
4. HttpClient
Spezifische Anforderungsimplementierung, vollständige Implementierung von POST, GET, Delete und anderen HTTP-Anforderungsmethoden, alle Methoden Der letzte Aufruf ist die SendAsync-Methode.
Die vier oben genannten Hauptklassen bilden die Hauptimplementierung von HttpClient-Anfragen. Wenn Sie sie nur einfach verwenden, müssen Sie sich nur um HttpClient kümmern, wie folgt:
Tatsächlich wurde darin die Zuweisung von HttpRequestMessage und HttpClientHandler standardmäßig implementiert.
Obwohl es kurz vorgestellt wird, ist grundsätzlich zu erkennen, dass die Implementierung von HttpClient eine sehr klare Arbeitsteilung aufweist. Es ist nicht mehr wie zuvor, dass alle Einstellungen in Webrequest konzentriert sind. Der direkteste Vorteil der klaren Arbeitsteilung besteht darin, dass HttpClient zum Teilen mehrerer Anfragen verwendet werden kann:
Der Standard-HttpClient ist die einfachste Möglichkeit, mit dem Senden von Anfragen zu beginnen kann verwendet werden, um so viele HTTP-Anfragen gleichzeitig zu senden, wie Sie möchten. In vielen Szenarien können Sie also einfach einen HttpClient erstellen und diesen dann für alle Ihre Anfragen verwenden.
Das heißt, wenn Sie in Ihrem Unternehmen verschiedene Anfragen initiieren möchten Im System können Sie einen HttpClient anstelle von HttpWebReqest freigeben. Grundsätzlich muss bei jeder Anforderung ein Objekt neu definiert werden, um den Ressourcenverbrauch zu reduzieren.
2. Refactor OSS.Http
Zurück zum Thema, Refactoring unseres aktuellen Codemoduls, es wird unter .Net Standard überhaupt nicht bereitgestellt. Die Unterstützung von httpWebRequest hat mich direkt zu der Entscheidung geführt, es erneut zu implementieren. Da httpWebRequest in der Vergangenheit grob war, musste ich im Grunde genommen ein großes Kapselungsframework erstellen Interessierte Studenten haben den Kern von RestSharp erkannt und können sich auf den alten Zweig unter dem Code OSS.Http beziehen.
Da ich vor dem Umbau nicht viel über HttpClient wusste, wollte ich den bestehenden Framework-Prozess fortführen und die Implementierung umstellen. Nach Durchsicht und Recherche der Kundendokumente stellte ich jedoch fest, dass viele Kapselungen völlig unnötig waren und sich auch der Prozess geändert hatte, sodass ich viele Dinge im ursprünglichen Framework löschte und die endgültige Implementierung neu arrangierte.
Natürlich ist die aktuelle Implementierung von HttpClient selbst einfach und klar genug, aber in vielen Fällen wird der direkte Aufruf von POST, GET und anderen Methoden die Wiederverwendung einiger Codes reduzieren Unten muss eine RestCommon-Methode implementiert werden. Um eine globale Anforderungssteuerung zu erreichen, muss der Aufrufer nur URL, HttpMothed und Parameter angeben.
Hier habe ich ein einfaches Flussdiagramm als Präsentation gezeichnet:
Es gibt im Grunde keinen großen Unterschied im Prozess der Datei lautet wie folgt:
Unter der Mos-Datei: Enum.cs-Aufzählungsklasse, FileParameter.cs-Dateiparameterklasse, FormParameter Form-Formularparameterklasse, OsHttpRequest-Anforderungsparameterklasse,
OsRest. cs ist derzeit die Hauptkapselungsklasse. Um sicherzustellen, dass HttpClient selbst über universelle Funktionen verfügt, erbt OsRest von HttpClient und stellt auch die RestSend-Methode bereit, in der der Prozess abgeschlossen und schließlich die SendAsync-Methode aufgerufen wird, um die Anforderung auszuführen.
Die Hilfsklasse RestUtil.cs vervollständigt die gemeinsame Nutzung des globalen OsRest (HttpClient) und definiert eine Standardimplementierung von HttpClientHandler. Sie können diese Klasse einfach direkt aufrufen.
Benutzerdefinierte Ausführungseinstellungen im Prozess können im RequestSet-Delegatenattribut in OSHttpRequest festgelegt werden. Der Zugriffstyp kann beispielsweise auf json festgelegt werden:
3. Probleme, auf die leicht zu stoßen ist
Obwohl nach der gesamten Rekonstruktion nicht viel Code vorhanden ist, sollte es dennoch einige Probleme geben, die mit allen geteilt werden können
1. Bei Problemen mit der Header-Zuweisung lesen Sie bitte meinen ersten Teil. Achten Sie darauf, verschiedene Header zu unterscheiden, da Ihnen sonst möglicherweise falsche Wertfehler gemeldet werden
2 . Sie können feststellen, dass es im obigen Flussdiagramm eine Beurteilung gibt, ob es sich um eine Get-Anfrage handelt, denn wenn es sich um eine Get-Anfrage handelt, kann dem Inhalt kein Wert zugewiesen werden, genau wie in HttpWebReqest, wenn die Wenn get request die GetRequestStream-Methode aufruft, wird für diesen Prädikattyp die Meldung „Eine Anfrage mit dem Fehler „Content-Body“ konnte nicht gesendet werden“ angezeigt. Wenn Sie OSS.Http als Anfrage verwenden, tritt dieses Problem natürlich nicht auf.
3. Die gleichzeitig mit der hochgeladenen Datei hochgeladenen Formularparameter unterscheiden sich von den separaten Formularparameterübermittlungen. Bitte achten Sie auf die Handhabung und nicht wissen, wie man auf die OsRest-Klasse verweist. Das ist alles, es wurde verarbeitet.
Das Obige ist eine detaillierte Einführung in die Rekonstruktion und Kapselung des zugrunde liegenden HttpClient von OSS.Http zur Unterstützung der Standardbibliothek. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Titel: Senden von HTTP-Anfragen und Bearbeiten von Antworten mit HttpClient in Java11 Einführung: In modernen Internetanwendungen ist die HTTP-Kommunikation mit anderen Servern eine sehr häufige Aufgabe. Java bietet einige integrierte Tools, die uns dabei helfen können, dieses Ziel zu erreichen. Das neueste und empfohlene ist die in Java11 eingeführte HttpClient-Klasse. In diesem Artikel wird erläutert, wie Sie HttpClient in Java11 verwenden, um HTTP-Anforderungen zu senden und Antworten zu verarbeiten.

So verwenden Sie http.Client in Golang für erweiterte Vorgänge von HTTP-Anfragen. Einführung: In der modernen Entwicklung sind HTTP-Anfragen ein unvermeidlicher Bestandteil. Golang bietet eine leistungsstarke Standardbibliothek, die das http-Paket enthält. Das http-Paket stellt die http.Client-Struktur zum Senden von HTTP-Anfragen und zum Empfangen von HTTP-Antworten bereit. In diesem Artikel untersuchen wir, wie Sie http.Client verwenden, um erweiterte Vorgänge für HTTP-Anfragen auszuführen, und stellen spezifische Codebeispiele bereit.

Hier ist eine Einführung: In der HttpClient4.x-Version wird die Get-Request-Methode automatisch umgeleitet, die Post-Request-Methode jedoch nicht. Darauf sollten Sie achten. Das letzte Mal, dass ich einen Fehler gemacht habe, war, als ich das Anmeldeformular per Post abgeschickt habe, aber zu diesem Zeitpunkt gab es keine automatische Weiterleitung. Der Unterschied zwischen Anforderungsweiterleitung und -umleitung 1. Bei der Umleitung handelt es sich um zwei Anforderungen und bei der Weiterleitung um eine Anforderung, sodass die Weiterleitungsgeschwindigkeit schneller ist als bei der Umleitung. 2. Nach der Weiterleitung ändert sich die Adresse in der Adressleiste und wird zum zweiten Mal zur angeforderten Adresse. Nach der Weiterleitung ändert sich die Adresse in der Adressleiste nicht und bleibt die zum ersten Mal angeforderte Adresse. 3. Weiterleitung ist ein Serververhalten und Umleitung ist ein Clientverhalten. Bei der Weiterleitung ändert sich die URL im Browser; bei der Weiterleitung bleibt die URL im Browser unverändert.

1. Importieren Sie die Abhängigkeit org.apache.httpcomponentshttpclient4.5.3com.alibabafastjson1.2.58org.apache.httpcomponentshttpmime4.5.3org.apache.httpcomponentshttpcore4.4.13org.slf4jslf4j-api1.7.72. Diese Toolklasse konvertiert Get-Anfragen Es wurden mehrere Parameterübergabemethoden geschrieben, darunter „Get Address Bar“-Übergabeparameter, „Get Params“-Übergabeparameter, „Post Params“-Übergabeparameter und „Post“.

Senden Sie asynchrone HTTP-Anfragen und Prozessantworten mit dem neuen HttpClient in Java 11. In Java 11 wurde die neue HttpClient-Klasse eingeführt, die leistungsstarke Funktionen zum Senden von HTTP-Anfragen und Prozessantworten bereitstellt. Im Vergleich zur vorherigen HttpURLConnection ist der neue HttpClient einfacher zu verwenden und unterstützt asynchrone Vorgänge, wodurch die Verarbeitung gleichzeitiger Anforderungen effizienter wird. In diesem Artikel wird die Verwendung des neuen HttpCli in Java11 vorgestellt

Hinweis 1: Die asynchrone HttpClient-Anfrage gibt CompletableFuture zurück, und eine eigene Ausnahmemethode kann für die Fallback-Verarbeitung verwendet werden. 2. Im Gegensatz zu WebClient gibt es bei HttpClient keine 4xx- oder 5xx-Statuscode-Ausnahmen. Sie müssen diese entsprechend Ihrer eigenen Situation behandeln, Statuscode-Ausnahmen manuell erkennen oder andere Inhalte zurückgeben. Beispiel@TestpublicvoidtestHandleException()throwsExecutionException,InterruptedException{HttpClientclient=Ht

Die Go-Sprache ist eine effiziente, flexible Programmiersprache mit hoher Parallelität und wird daher häufig in der Netzwerkprogrammierung und gleichzeitigen Verarbeitung verwendet. Der HTTP-Client ist eine häufig verwendete Bibliothek in der Go-Sprache. Wenn Sie jedoch nicht aufpassen, wird während der Verwendung der Fehler „undefiniert: http.Client“ angezeigt. Diese Art von Fehler wird den Entwicklern große Probleme bereiten. In diesem Artikel wird erläutert, wie dieses Problem gelöst werden kann. Zuerst müssen wir den Importmechanismus der Go-Sprache verstehen. In Go müssen alle Pakete bestanden werden

Titel: Verwenden Sie die Funktion http.Client, um benutzerdefinierte HTTP-Anfragen zu senden und Antworten zu erhalten. In modernen Netzwerkanwendungen müssen wir häufig HTTP-Anfragen senden und Antworten vom Server erhalten. Die Standardbibliothek in der Go-Sprache stellt ein leistungsstarkes http-Paket bereit, in dem der Typ http.Client die Funktion des Sendens von HTTP-Anfragen kapselt. In diesem Artikel wird erläutert, wie Sie mit der http.Client-Funktion benutzerdefinierte HTTP-Anfragen senden und die Antwort des Servers erhalten. Zuerst müssen wir ht importieren
