asp.net example Differenza tra HttpRequest, HttpWebRequest e WebRequest




webrequest using c# (2)

HttpRequest , come già detto Oded , è una cosa completamente diversa - genera richieste HTTP sul lato server così i client (come HttpWebRequest ) possono leggerlo.

Ora, tra HttpWebRequest e WebRequest , mentre si eredita semplicemente l'altro, in pratica, non c'è differenza se si utilizza http:// quando si crea la richiesta. Sembra che sia tutto basato sulla progettazione del codice.

Per utilizzare WebRequest è necessario Create , che restituirà una classe discendente. E finché usiamo la sua istanza, agirà proprio come un wrapper per la classe discendente. Ecco un'osservazione dai documenti :

WebRequest è la classe di base astratta per il modello di richiesta / risposta di .NET Framework per l'accesso ai dati da Internet. Un'applicazione che utilizza il modello richiesta / risposta può richiedere dati da Internet in modo indipendente dal protocollo, in cui l'applicazione funziona con le istanze della classe WebRequest mentre le classi discendenti specifiche del protocollo eseguono i dettagli della richiesta.

(...)

Poiché la classe WebRequest è una classe astratta , il comportamento effettivo delle istanze WebRequest in fase di esecuzione è determinato dalla classe discendente restituita dal metodo Create . Per ulteriori informazioni sui valori predefiniti e sulle eccezioni, consultare la documentazione per le classi discendenti, come HttpWebRequest e FileWebRequest .

disconoscimento

Lo sapevo solo ora perché, mentre cercavo la risposta (che non conoscevo 1 ora fa), l'ho ottenuto dai forum di codeguru e MSDN doc , tutto grazie a google :

La classe HttpWebRequest fornisce supporto per le proprietà e i metodi definiti in WebRequest e per ulteriori proprietà e metodi che consentono all'utente di interagire direttamente con i server tramite HTTP.

E le osservazioni continuano (selezionate solo quelle con una certa rilevanza per la differenza):

Non utilizzare il costruttore HttpWebRequest . Utilizzare il metodo WebRequest.Create per inizializzare nuovi oggetti HttpWebRequest . Se lo schema dell'Uniform Resource Identifier (URI) è http: // o https: //, Create restituisce un oggetto HttpWebRequest .

Il metodo GetResponse effettua una richiesta sincrona alla risorsa specificata nella proprietà RequestUri e restituisce un HttpWebResponse che contiene la risposta. È possibile effettuare una richiesta asincrona alla risorsa utilizzando i metodi BeginGetResponse e EndGetResponse .

HttpWebRequest espone i valori di intestazione HTTP comuni inviati alla risorsa Internet come proprietà, impostate in base a metodi o impostate dal sistema;

Poi c'è un tavolo che non citerò qui.

Mi chiedevo se qualcuno spiegasse la differenza per le classi elencate


Fanno cose diverse.

WebRequest è la classe base astratta per HttpWebRequest - non puoi usarla direttamente. È la classe base di altre classi *Request (per FTP, File e altri tipi di richieste Web). Queste classi sono tutte utilizzate per ottenere risorse (file) dal web.

Esiste anche una classe WebClient , probabilmente la più semplice da utilizzare di tutte le classi BCL progettate per recuperare una risorsa da Internet.

HttpRequest , d'altra parte rappresenta una richiesta per una risorsa in un'applicazione ASP.NET - questo è il lato server di una Request .

La differenza principale è che HttpWebRequest è un client HTTP e HttpRequest è lato server da utilizzare in un'applicazione Web ASP.NET.





asp.net