Net és C #, osztályok és webrequest WebResponse
Először vizsgáljuk meg WebRequest osztály:
A módszerek és tulajdonságait az osztály WebRequest
Módszerek és tulajdonságok
Create () és CreateDefault ()
A WebRequest osztályban nincs nyilvános kivitelező. Ehelyett a statikus konstruktor metódust létrehozása () és CreateDefault () lehet használni, hogy hozzon létre osztály példányok. Ezek a módszerek valójában nem hozza létre a WebRequest objektum típusát, és egy új objektumot egy osztály származó WebRequest, például HttpWebRequest vagy FileWebRequest.
Használata RegisterPrefix () módszer osztály lehet regisztrálva kezelésére egy adott protokollt. Tárgyak ennek az osztálynak jön létre WebRequest.Create () metódust. Ez a mechanizmus az úgynevezett „dugaszolható protokoll” (csatlakoztatható protokoll).
GetRequestStream () metódus visszaad egy stream objektum, amelyet fel lehet használni küldésére néhány adatot a szerverre.
BeginGetRequestStream () és EndGetRequestStream ()
Az aszinkron hozzáférési kérés végrehajtásra BeginGetRequestStream flow () és EndGetRequestStream ().
GetResponse () metódus visszaad egy WebResponse tárgyat, hogy lehet használni, hogy olvassa az adatokat a szerverre.
BeginGetResponse () és EndGetResponse ()
Ami a kérést patak aszinkron módszerek DPJ választ patak.
Ha BeginXX () módszer kezdett aszinkron feldolgozás, lehetséges, hogy hagyja abba az eljárás megszakítás ().
RequestUri - csak olvasható tulajdonság, amely visszaadja az URI, társított WebRequest. Ez URI lehet telepíteni egy statikus módszer létrehozása () az osztály.
Módszer tulajdonság, hogy vagy állítsa módszer egy adott lekérdezés. HttpWebRequest objektum támogat GET HTTP-módszerek, POST, HEAD, és így tovább. D.
Attól függően, hogy a használt protokollt, a szerver is át és a különböző információk a fejlécek lehet beszerezni a szerver. Szereplő információk protokoll fejléc WebHeaderCollection gyűjtemény, amely elérhető a fejlécek ingatlan.
ContentType és ContentLength
Az adatok típusa a szerver által küldött határozza meg a ContentType tulajdon. Lehet különböző típusú adatokat olyan hosszú, mint az adatok maradhat a tömb bájt. tartalom általában meghatározza az adatok MIME-típus: image / jpeg, image / gif, text / html vagy text / xml.
Ha a szerver felhasználói azonosítást igénylő, igazolást felhasználó személyazonosságát keresztül be lehet állítani a bizonyítványok tulajdon.
Mert protokollok, amelyek támogatják a pre-hitelesítése PreAuthenticate tulajdonság lehet állítani, hogy igaz. Alapértelmezés szerint a web-böngésző először megpróbálja elérni a web-oldalt az oldal hitelesítés nélkül. Ha a Web-site-hitelesítésre van szükség, a szerver válaszol, hogy a hozzáférés megtagadva hitelesített felhasználók számára. Az alábbi lekérdezés az ügyfél által magában hitelesítési adatokat. Ez a további árfolyam ciklus lehet kerülni, ha a tulajdonság PreAuthenticate állítva.
A Proxy ingatlan telepíthető webes proxy, amelyet ehhez a kéréshez.
A ConnectionGroupName tulajdonságok lehet meghatározni medence használt vegyületek ezzel az objektumot WebRequest.
Timeout tulajdonság meghatározza az időt ezredmásodpercben, amely szükséges a válasz a szervertől. Az alapértelmezett érték 100 000 ml-t. Ha ez idő alatt a kiszolgáló nem válaszol, kivétel keletkezik WebException.
WebResponse osztály használt olvasni az adatokat a szerverre. Egy tárgy ezen osztály által visszaadott GetResponse (), ahogy, ha figyelembe vesszük WebRequest osztályban.
A módszerek és tulajdonságok WebResponse osztály
Módszerek és tulajdonságok
GetResponseStream () metódus visszaadja egy stream objektum, amit használnak, hogy olvasni egy válasz a szervertől.
Ha a válasz objektum már nincs szükség, akkor meg kell szüntetni a listát ().
Fejlécek WebHeaderCollection tulajdonság visszaadja egy gyűjtemény, amely magában foglalja a protokoll-specifikus fejléc információt, amelyet a szerver visszaadja.
Nézzünk egy kis példa az ilyen osztályok WPF-alkalmazás:
csatlakoztatható protokoll
WebRequest - egy absztrakt osztály, így WebRequest.Create () módszer nem képes létrehozni egy objektum típusú WebRequest - helyett létrehoz egy osztály objektum származó WebRequest. Amikor elküldi HTTP-kérés módszer WebRequest.Create () létrehoz egy HttpWebRequest objektumot. FileWebRequest objektum jön létre kérésére a fájlátvitel rendszer.
Amint látható továbbá, áramkörök, http, https, és előre meghatározott fájl a konfigurációs fájlban .NET, Machine.config fájl. A konfigurációs fájl megtalálható a katalógusban
Egy sor használt protokollok osztály WebRequest, bővíthetik a szoftver elemet, vagy hozzá a konfigurációs fájlban. Hogy támogassa az új protokoll eltérő rendszereket http, https és a fájl, akkor létre kell hozni egy új osztályt, amely abból a WebRequest, mint FtpWebRequest FTP. Ez az osztály csorbíthatja a módszerek és tulajdonságait az alap osztály, és végre protokoll-specifikus viselkedés. Emellett arra is szükség van, hogy meghatározzák az osztály a kezdeményező (gyári osztály). FtpWebRequest teremt osztályú objektumok. Egy ilyen osztály-iniciátor osztály WebRequest, IWebRequestCreate végre kell hajtania a felületet. Ezt hívjuk osztály FtpWebRequestCreator. Egy ilyen eset történt ebben az osztályban kell regisztrálni az ftp program segítségével WebRequest osztály:
Ha most ftp program használható a módszer WebRequest.Create () létrehoz és visszatér egy új példányt a program FtpWebRequest osztályban. Most a kérés objektum lehet használni, hogy másolhat fájlokat FTP-cepvera és FTP-szerverre. Itt nem fog részt a megvalósításban FtpWebRequestCreator osztályban, de akkor csináld magad. FTP-kliens szoftver használatához szükséges az aljzat osztályok TCP kapcsolatokat.
FileWebRequest és FileWebResponse
Olvasása és írása a helyi fájlok, vagy a közös eszközöket is, nem nagyon különbözik az olvasási és írási fájl található Web-szerverek. Írni és olvasni a fájlokat az osztályok és FileWebRequest FileWebResponse. Azonban sok módszerek és tulajdonságok meghatározása alaposztályok WebRequest és WebResponse, nem használt származtatott osztályok, és az MSDN dokumentációt csak szerepel a „későbbi használatra fenntartva.”
Annak igazolására, a lehetséges felhasználása az osztályok és FileWebRequest FileWebResponse WPF létrehozott egy egyszerű alkalmazás, amelyben a fájlt megnyitni, akkor írja be a nevét a szövegmezőbe, majd a fájl megnyitásakor, és megjelenik egy többsoros beviteli mezőbe. A fájl megnyitása felírható lép:
Olvasás fájlból
Írásban Files
Írni az adatokat vissza a fájl végrehajtására kattintással kezelőjét a gombot a „Mentés”. Mint korábban, hozzon létre egy WebRequest objektum átadásával a fájl nevét. Most ahelyett, hogy a StreamReader StreamWriter. Ezen kívül van egy másik jelentős változás a kódot. Ahhoz, hogy az áramlás „írás” kell állítani a „fel” értéket a módszer tulajdon. Alapértelmezés szerint ez a tulajdonság értéke „GET”, jelezve, hogy az áramlás csak olvasni lehet:
Aszinkron oldalkéréseket
További eszközök WebRequest osztály az a képesség, hogy kérjen egy oldalt aszinkron. Ez azt jelenti, miatt jelentősen érzékelhető késés között létezhet a gazda elküldi a kérelmet, és megkapta a választ. Módszerek, mint WebClient.DownloadData () és WebRequest.GetResponse (), nem fog visszatérni kontroll, amíg készen szerver válasz. Nem szeretném, hogy „befagyasztása” az alkalmazás hosszabb ideig, és mivel az ilyen szituációkban a legjobb módszereket alkalmazzuk BeginGetResponse () és EndGetResponse ().
BeginGetResponse () metódus működik aszinkron és visszaadja a vezérlést szinte azonnal. „A színfalak mögött” futási aszinkron fut a háttérben egy választ kapni a szervertől. Ahelyett, hogy visszatért WebResponse tárgy, BeginGetResponse () metódus visszaadja egy objektum, amely megvalósítja a IAsyncResult felületen. Ezzel a felület továbbra is működik, vagy várja meg, amíg ad választ, majd hívja EndGetResponse () gyűjteni az eredményeket.
Az is lehetséges, hogy átmenjen egy visszahívási megbízottja BeginGetResponse () módszer. A cél a visszahívás megbízottja egy módszert, amely visszaadja void és fogadása IAsyncResult linket paraméterként. Ha a munkavállaló szál befejezi azt az eredményt, a futási felhívja a visszahívás küldött, hogy tájékoztassa a befejezése a munka. Amint az az alábbi kódot, EndGetResponse () hívás a visszahívás a módszer lehetővé teszi, hogy kivonat WebResponse oldalak (módosítják az első példa):
Felhívjuk figyelmét, hogy annak érdekében, hogy vonjuk ki a forrás objektum WebRequest BeginGetResponse () metódus, akkor adja át ezt a tárgyat a második paraméter. A második paraméter egy hivatkozás egy tárgy, és ez ismert, mint az állapotváltozó. Során az eljárás foganatosítása azonos visszahívás állapota objektum lehet extraháljuk AsyncState IAsyncResult felület tulajdonságait.