Heim Backend-Entwicklung C#.Net-Tutorial 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.

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.

Mar 06, 2017 am 10:57 AM

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


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Senden Sie eine HTTP-Anfrage und verarbeiten Sie die Antwort mit HttpClient in Java 11 Senden Sie eine HTTP-Anfrage und verarbeiten Sie die Antwort mit HttpClient in Java 11 Aug 01, 2023 am 11:48 AM

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 So verwenden Sie http.Client in Golang für erweiterte Vorgänge von HTTP-Anfragen Nov 18, 2023 am 11:37 AM

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.

So vergleichen Sie Umleitung und Anforderungsweiterleitung mit httpclient in Java So vergleichen Sie Umleitung und Anforderungsweiterleitung mit httpclient in Java Apr 21, 2023 pm 11:43 PM

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.

So senden Sie eine HTTP-Anfrage mit Java HttpClient So senden Sie eine HTTP-Anfrage mit Java HttpClient Apr 20, 2023 pm 11:49 PM

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 verarbeiten Sie Antworten mit dem neuen HttpClient in Java 11 Senden Sie asynchrone HTTP-Anfragen und verarbeiten Sie Antworten mit dem neuen HttpClient in Java 11 Jul 31, 2023 pm 02:24 PM

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

Analyse von Fehlerbehandlungsbeispielen von HttpClient in Java Analyse von Fehlerbehandlungsbeispielen von HttpClient in Java May 08, 2023 am 11:07 AM

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

Wie behebe ich den Fehler „undefiniert: http.Client' in Golang? Wie behebe ich den Fehler „undefiniert: http.Client' in Golang? Jun 24, 2023 pm 05:49 PM

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

Verwenden Sie die Funktion http.Client, um benutzerdefinierte HTTP-Anfragen zu senden und Antworten zu erhalten Verwenden Sie die Funktion http.Client, um benutzerdefinierte HTTP-Anfragen zu senden und Antworten zu erhalten Jul 24, 2023 pm 11:06 PM

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

See all articles