Penggunaan fungsi RESPONSE.WRITE pada PHP

Katakanlah kita perlu mendapatkan data dari situs, yang pengumpulannya secara manual tidak praktis atau tidak mungkin karena volumenya. Dalam kasus seperti itu, kami dapat mengotomatiskan proses menggunakan alat yang dijelaskan di bawah ini.

perpustakaan permintaan

Pustaka Python untuk membuat permintaan ke server dan memproses tanggapan. Dasar dari skrip parsing dan senjata utama kami. Menggunakan perpustakaan ini, kami mendapatkan konten halaman dalam bentuk html untuk parsing lebih lanjut.

impor permintaan tanggapan = permintaan . get ("https://ya.ru" ) # get-request print (respons .text ) # konten halaman cetak payload = ( "key1" : "value1", "key2" : "value2" ) response = request . get("http://httpbin.org/get", params = payload ) # permintaan dengan parameter headers = ( "user-agent" : "my-app/0.0.1" ) response = request . dapatkan(url , tajuk = tajuk ) # permintaan dengan header html tertentu

API

Antarmuka pemrograman aplikasi - antarmuka pemrograman aplikasi yang disediakan oleh pemilik aplikasi web kepada pengembang lain. Kurangnya API yang dapat memenuhi kebutuhan kita adalah hal pertama yang harus dipastikan sebelum bergegas menganalisis kode sumber halaman dan menulis parser untuk itu. Banyak situs populer memiliki API dan dokumentasi mereka sendiri yang menjelaskan cara menggunakannya. Kami dapat menggunakan api dengan cara ini - kami membentuk permintaan http sesuai dengan dokumentasi, dan kami mendapatkan respons menggunakan permintaan.

BS4

Beautifulsoup4 adalah perpustakaan untuk mengurai dokumen html dan xml. Memungkinkan Anda mengakses langsung konten tag apa pun dalam html.

from bs4 import BeautifulSoup soup = BeautifulSoup (raw_html , "html.parser" ) print (sup . find ("p" , class_ = "some-class" ) .text ) # print isi tag "p" dengan class "some-class"

Selenium WebDriver

Data di situs dapat dihasilkan secara dinamis menggunakan javascript. Dalam hal ini, permintaan + bs4 tidak akan dapat mengurai data ini. Faktanya adalah bahwa bs4 mem-parsing kode sumber halaman tanpa mengeksekusi js. Untuk mengeksekusi kode js dan mendapatkan halaman yang identik dengan yang kita lihat di browser, Anda dapat menggunakan driver web Selenium - ini adalah satu set driver untuk browser yang berbeda, disertakan dengan perpustakaan untuk bekerja dengan driver ini.

Dan bagaimana jika ada otorisasi?

session = request.Session() data = ("login_username":"login", "login_password":"password") url = "http://site.com/login.php" response = session.post(url, data =data)

Tetapi bagaimana jika situs tersebut melarang banyak permintaan?

  • Setel penundaan antara permintaan:

response = request.get(url, timeout=(10, 0.01)) # batas waktu koneksi, batas waktu baca (dalam detik)

  • Berpura-pura menjadi browser menggunakan driver web Selenium atau dengan meneruskan konten header agen pengguna, membuat permintaan:

user_agent = ("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) " "Gecko/20100101 Firefox/50.0") request = request.get(url, headers=("User-Agent":user_agent))

  • Gunakan proxy:

Menghasilkan respons dari pengontrol

Setelah pengontrol selesai memproses permintaan, biasanya diperlukan untuk menghasilkan respons. Saat kita membuat pengontrol tingkat rendah dengan langsung mengimplementasikan antarmuka IController, kita harus bertanggung jawab atas setiap aspek pemrosesan permintaan, termasuk menghasilkan respons ke klien.

Misalnya, untuk mengirim respons HTML, Anda perlu membuat dan menyusun data HTML, lalu mengirimkannya ke klien menggunakan metode Response.Write(). Demikian pula, untuk mengarahkan ulang browser pengguna ke URL yang berbeda, Anda perlu memanggil metode Response.Redirect() dan meneruskannya ke URL yang diperlukan. Kedua pendekatan ditunjukkan dalam kode di bawah ini, yang menunjukkan ekstensi ke kelas BasicController yang kita buat di artikel sebelumnya menggunakan implementasi antarmuka IController:

Menggunakan System.Web.Mvc; menggunakan System.Web.Routing; namespace ControllersAndActions.Controllers ( BasicController kelas publik: IController ( public void Execute(RequestContext requestContext) ( string controller = (string)requestContext.RouteData.Values["controller"]; string action = (string)requestContext.RouteData.Values["action "]; if (action.ToLower() == "redirect") ( requestContext.HttpContext.Response.Redirect("/Derived/Index"); ) else ( requestContext.HttpContext.Response.Write(string.Format("Controller : (0), Metode tindakan: (1)", pengontrol, tindakan)); ) ) ) )

Pendekatan yang sama dapat diterapkan jika controller diwarisi dari kelas Controller. Kelas HttpResponseBase yang dikembalikan saat membaca properti requestContext.HttpContext.Response dalam metode Execute() tersedia melalui properti Controller.Response, seperti yang ditunjukkan dalam contoh berikut, yang memperluas kelas DerivedController, juga dibuat sebelumnya dengan mewarisi dari kelas Kelas pengontrol:

Menggunakan Sistem; menggunakan System.Web; menggunakan System.Web.Mvc; namespace ControllersAndActions.Controllers ( public class DerivedController: Controller ( public ActionResult Index() ( // ... ) public void ProduceOutput() ( if (Server.MachineName == "ProfessorWeb") Response.Redirect("/Basic/Index" ); else Response.Write("Controller: Derived, Metode Tindakan: ProduceOutput"); ) ) )

Metode ProduceOutput() menggunakan nilai properti Server.MachineName untuk memutuskan respons mana yang akan dikirim ke klien. ("ProfessorWeb" adalah nama mesin pengembangan saya.)

Meskipun pendekatan menghasilkan respons kepada pengguna ini berhasil, ada beberapa masalah dengannya:

    Kelas pengontrol harus berisi informasi tentang HTML atau struktur URL, yang membuat kelas lebih sulit untuk dibaca dan dipelihara.

    Kontroler yang menghasilkan respons langsung ke output sulit untuk diuji unit. Anda perlu membuat implementasi tiruan dari objek Response dan kemudian dapat memproses output dari controller untuk menentukan apa itu. Ini mungkin berarti, misalnya, kebutuhan untuk mengimplementasikan penguraian markup HTML pada kata kunci yang merupakan proses yang panjang dan melelahkan.

    Penanganan detail halus dari setiap respons ini rumit dan rawan kesalahan. Beberapa programmer menyukai kontrol absolut yang disediakan dengan membangun pengontrol tingkat rendah, tetapi ini biasanya menjadi rumit dengan sangat cepat.

Untungnya, Kerangka MVC memiliki alat praktis yang menyelesaikan semua masalah yang disebutkan - hasil tindakan. Bagian berikut menjelaskan konsep hasil tindakan dan menunjukkan berbagai cara penggunaannya untuk membangkitkan tanggapan dari pengontrol.

Hasil tindakan

Hasil tindakan dalam Kerangka MVC digunakan untuk memisahkan pernyataan maksud dari eksekusi maksud (maaf untuk tautologinya). Konsepnya tampak sederhana setelah Anda memahaminya, tetapi perlu waktu untuk memahami karena beberapa tipuan.

Alih-alih berurusan langsung dengan objek Respon, metode tindakan mengembalikan objek kelas yang diturunkan dari Hasil Tindakan, yang menjelaskan seperti apa seharusnya respons dari pengontrol, seperti merender tampilan atau mengalihkan ke URL atau metode tindakan lain. Namun (ini adalah tipuan yang sangat) jawabannya tidak dihasilkan secara langsung. Sebagai gantinya, objek ActionResult dibuat yang diproses oleh Kerangka Kerja MVC untuk mendapatkan hasil setelah metode tindakan dipanggil.

Sistem Hasil Tindakan adalah contoh pola desain Perintah. Templat ini mewakili skenario tempat Anda menyimpan dan meneruskan objek yang menjelaskan operasi yang akan dilakukan.

Ketika Kerangka MVC menerima objek ActionResult dari metode tindakan, itu memanggil ExecuteResult() metode Yang didefinisikan dalam kelas objek ini. Implementasi hasil tindakan kemudian beroperasi pada objek Response untuk menghasilkan output yang sesuai dengan maksud Anda. Untuk mendemonstrasikan ini dalam tindakan, mari buat folder Infrastruktur dan tambahkan file kelas baru bernama CustomRedirectResult.cs ke dalamnya dengan implementasi ActionResult kustom yang ditunjukkan pada contoh di bawah ini:

Menggunakan System.Web.Mvc; namespace ControllersAndActions.Infrastructure ( public class CustomRedirectResult: ActionResult ( public string Url ( get; set; ) public override void ExecuteResult(ControllerContext context) ( string fullUrl = UrlHelper.GenerateContentUrl(Url, context.HttpContext); context.HttpContext.Redirect (Url lengkap); ) ) )

Kelas ini didasarkan pada cara kerja kelas System.Web.Mvc.RedirectResult. Salah satu kelebihannya sumber terbuka Kerangka kerja MVC adalah tentang kemampuan untuk mengeksplorasi cara kerja apa pun. Kelas CustomRedirectResult jauh lebih sederhana daripada yang setara dengan MVC, tetapi cukup untuk tujuan artikel ini.

Saat membuat instance kelas RedirectResult, kami meneruskan URL ke mana pengguna harus diarahkan. Metode ExecuteResult() yang akan dijalankan oleh Kerangka MVC setelah menyelesaikan metode tindakan menerima objek Respon untuk permintaan melalui objek ControllerContext yang disediakan oleh kerangka kerja dan memanggil metode RedirectPermanent() atau metode Redirect() (ini adalah persis apa yang dilakukan di dalam implementasi IController tingkat rendah dalam contoh sebelumnya di artikel).

Penggunaan kelas CustomRedirectResult diilustrasikan pada contoh di bawah ini, yang menunjukkan perubahan yang telah dilakukan pada pengontrol Derived:

// ... menggunakan ControllersAndActions.Infrastructure; namespace ControllersAndActions.Controllers ( public class DerivedController: Controller ( public ActionResult Index() ( // ... ) public ActionResult ProduceOutput() ( jika (Server.MachineName == "MyMachineName") mengembalikan CustomRedirectResult baru ( Url = "/Basic/ Index" ); else ( Response.Write("Controller: Derived, Metode Tindakan: ProduceOutput"); return null; ) ) ) )

Perhatikan bahwa kita telah dipaksa untuk mengubah hasil dari metode aksi untuk mengembalikan sebuah ActionResult. Kami mengembalikan null jika kami tidak ingin Kerangka MVC melakukan apa pun ketika metode tindakan kami telah selesai, yang dilakukan jika instance CustomRedirectResult tidak dikembalikan.

Pengontrol dan Tindakan Pengujian Unit

Banyak bagian dari Kerangka MVC dirancang untuk membuat pengujian unit lebih mudah, dan ini terutama berlaku untuk tindakan dan pengontrol. Ada beberapa alasan untuk dukungan ini:

    Anda dapat menguji tindakan dan pengontrol di luar server web. Objek konteks diakses melalui kelas dasarnya (seperti HttpRequestBase), yang mudah ditiru.

    Anda tidak perlu mengurai markup HTML untuk menguji hasil metode tindakan. Anda dapat memeriksa objek ActionResult yang dikembalikan untuk memastikan Anda mendapatkan hasil yang diharapkan.

    Emulasi permintaan klien tidak diperlukan. Sistem pengikatan model Kerangka MVC memungkinkan Anda untuk menulis metode tindakan yang menerima input dalam parameternya. Untuk menguji metode tindakan, Anda hanya perlu memanggilnya secara langsung dan memberikan nilai parameter yang sesuai.

Artikel selanjutnya tentang menghasilkan data dari pengontrol akan menunjukkan kepada Anda cara membuat pengujian unit untuk berbagai jenis hasil tindakan.

Jangan lupa bahwa pengujian unit hanyalah sebagian dari gambarannya. Perilaku kompleks dalam aplikasi terjadi ketika metode tindakan dipanggil secara berurutan. Pengujian unit paling baik dikombinasikan dengan pendekatan pengujian lainnya.

Sekarang setelah Anda mengetahui cara kerja hasil tindakan pengalihan khusus, Anda dapat beralih ke yang setara, yang disediakan oleh kerangka kerja MVC, yang kuat dan diuji secara ekstensif oleh Microsoft. Perubahan yang diperlukan untuk pengontrol Derived diberikan di bawah ini:

// ... public ActionResult ProduceOutput() ( mengembalikan new RedirectResult("/Basic/Index"); ) // ...

Dihapus dari metode tindakan operator bersyarat, yang berarti setelah menjalankan aplikasi dan membuka URL seperti /Derived/ProduceOutput , browser akan diarahkan ke URL seperti /Basic/Index. Untuk menyederhanakan kode metode tindakan, kelas Controller menyertakan metode praktis untuk menghasilkan berbagai jenis objek ActionResult. Jadi, misalnya, kita bisa mendapatkan efek yang sama seperti pada contoh di atas dengan mengembalikan hasil dari metode Redirect():

// ... public ActionResult ProduceOutput() ( return Redirect("/Basic/Index"); ) // ...

Tidak ada yang rumit tentang sistem hasil tindakan, tetapi pada akhirnya membantu untuk mendapatkan kode yang lebih sederhana, lebih bersih, dan lebih konsisten yang mudah dibaca dan diuji unit. Misalnya, dalam kasus pengalihan, Anda cukup memeriksa apakah metode tindakan mengembalikan instance RedirectResult yang properti Urlnya berisi target yang diharapkan.

Kerangka MVC mendefinisikan banyak jenis hasil tindakan bawaan, yang dijelaskan dalam tabel di bawah ini:

Jenis ActionResult bawaan
JenisKeteranganMetode Pembantu dari Kelas Pengendali
Lihat hasil

Membuat template tampilan yang ditentukan atau standar

Melihat()
Hasil Tampilan Sebagian

Membuat template tampilan parsial yang ditentukan atau standar

Tampilan Sebagian()
RedirectToRouteResult

Mengeluarkan HTTP 301 atau 302 redirect ke metode tindakan atau entri rute yang ditentukan, menghasilkan URL sesuai dengan konfigurasi perutean

RedirectToAction()
RedirectToActionPermanent()
RedirectToRoute()
RedirectToRoutePermanent()
RedirectResult

Mengeluarkan HTTP 301 atau 302 redirect ke URL yang diberikan

pengalihan()
PengalihanPermanen()
Hasil Konten

Mengembalikan data teks yang tidak diformat ke browser, secara opsional mengatur header tipe konten

isi()
FileHasil

Melewati data biner (seperti file pada disk atau array byte dalam memori) langsung ke browser

Mengajukan()
JsonHasil

Membuat serial objek .NET ke format JSON dan mengirimkannya sebagai respons. Tanggapan semacam ini lebih sering dihasilkan saat menggunakan API Web dan alat AJAX.

json()
Hasil JavaScript

Mengirim sepotong kode sumber JavaScript untuk dieksekusi oleh browser

JavaScript()
HttpHasil Tidak Sah

Menyetel kode status respons HTTP ke 401 (artinya "tidak diotorisasi"), yang menyebabkan mekanisme otentikasi saat ini (Otentikasi Formulir atau Otentikasi Windows) meminta pengunjung untuk masuk

Bukan
HttpNotFoundResult

Mengembalikan kesalahan HTTP dengan kode 404 - Tidak ditemukan (tidak ditemukan)

HttpTidakDitemukan()
HttpStatusCodeHasil

Mengembalikan kode HTTP yang ditentukan

Bukan
Hasil Kosong

Tidak melakukan apapun

Bukan

Semua tipe ini diturunkan dari kelas ActionResult, dan banyak di antaranya memiliki metode pembantu yang praktis di kelas Controller. Kami akan mendemonstrasikan penggunaan jenis hasil ini di artikel berikutnya.

Untuk mendapatkan instance kelas ini, gunakan pemanggilan metode wa()->getResponse(), misalnya:

Wa()->getResponse()->getHeader("Content-type")

Metode

fungsi publik tambahkan CSS ($url, $app_id = false)

Menambahkan URL ke daftar file CSS. Semua URL file CSS yang ditambahkan dapat diambil di template Smarty menggunakan metode ($wa->css()).

Parameter

  • $url

    URL relatif dari file CSS. Jika nilai parameter $app_id ditentukan, maka URL file harus ditentukan relatif terhadap URL direktori dengan file aplikasi yang sesuai. Jika tidak, URL relatif harus relatif terhadap direktori instalasi kerangka kerja.

  • $app_id

    ID aplikasi.

Contoh

wa()->getResponse()->addCss("css/myapp.css", "myapp");

fungsi publik tambahkan Google Analytics ($str)

Menambahkan cuplikan JavaScript untuk Google Analytics. Kode Google Analytics (termasuk yang ditambahkan oleh metode ini) disertakan dalam template HTML situs menggunakan metode ($wa->headJs()).

Parameter

  • $str

    Fragmen kode JavaScript.

fungsi publik tambahkanHeader ($nama, $nilai, $ganti = benar)

Menambahkan header yang akan dikirim oleh server sebagai tanggapan atas permintaan pengguna. Semua header yang ditambahkan dengan cara ini akan dikirim ke pengguna saat menjalankan file .

Parameter

  • $nama

    Nama gelar.

  • $nilai

    Nilai judul.

  • $ganti

    Bendera yang menunjukkan bahwa nilai yang ditetapkan sebelumnya untuk header yang ditentukan harus diganti.

Contoh

wa()->getResponse()->addHeader("Tipe-konten", "aplikasi/json");

fungsi publik tambahkanJs ($url, $app_id = false)

Menambahkan URL ke daftar file JavaScript. Semua URL JavaScript yang ditambahkan dapat diambil di template Smarty menggunakan metode ($wa->js()).

Parameter

  • $url

    URL file JavaScript. Jika nilai parameter $app_id ditentukan, maka URL file harus ditentukan relatif terhadap URL direktori dengan file aplikasi yang sesuai. Jika tidak, URL relatif harus relatif terhadap direktori instalasi kerangka kerja.

  • $app_id

    ID aplikasi.

Contoh

wa()->getResponse()->addJs("js/myapp.js", "myapp");

fungsi publik dapatkanCss ($html = benar, $ketat = salah)

Mengembalikan daftar tautan file CSS yang ditambahkan sebelumnya.

Parameter

  • $html

    Bendera yang menunjukkan perlunya mengembalikan kode HTML untuk menghubungkan file CSS. Jika salah ditentukan, metode mengembalikan larik URL dari file tersebut.

  • $ketat

    Tandai untuk menunjukkan bahwa format XHTML digunakan sebagai pengganti HTML ketika $html disetel ke true .

Contoh

wa()->getResponse()->getCss();

fungsi publik dapatkanHeader ($nama = null)

Mengembalikan nilai header respons.

Parameter

  • $nama

    ID header yang nilainya akan dikembalikan. Jika tidak ditentukan, metode ini mengembalikan seluruh larik header saat ini.

Contoh

wa()->getResponse()->addHeader("Tipe-konten", "aplikasi/json"); wa()->getResponse()->getHeader("Tipe-Konten");

Hasil

aplikasi/json

fungsi publik dapatkanJs ($html = benar)

Mengembalikan daftar referensi file respons JavaScript.

Parameter

  • $html

    Bendera opsional yang menunjukkan perlunya mengembalikan kode HTML untuk menghubungkan file JavaScript. Jika tidak, metode ini mengembalikan larik URL file saat ini.

Contoh

wa()->getResponse()->getJs();

fungsi publik dapatkan Meta ($nama = null)

Mengembalikan isi data META: judul halaman ("judul"), kata kunci tag META ("kata kunci"), deskripsi ("deskripsi").

Parameter

  • $nama

    ID elemen data META yang nilainya akan dikembalikan. Jika tidak ditentukan, metode ini mengembalikan seluruh larik data META saat ini.

Contoh

wa()->getResponse()->getMeta("kata kunci");

fungsi publik dapatkan status()

Mengembalikan status respons server yang ditetapkan sebelumnya.

Contoh

wa()->getResponse()->setStatus(200); wa()->getResponse()->getStatus();

Hasil

200

fungsi publik dapatkanJudul()

Mengembalikan judul (TITLE) halaman.

Contoh

wa()->getResponse()->setTitle("Toko Online Saya"); wa()->getResponse()->getTitle();

Hasil

Toko online saya

fungsi publik mengalihkan ($url, $kode = null)

Mengarahkan pengguna ke URL yang ditentukan.

Parameter

  • $url

    URL ke mana pengguna harus diarahkan.

  • $kode

    Kode respons server yang harus menyertai pengalihan.

Contoh

wa()->getResponse()->redirect("http://domainlain.ru/", 301);

fungsi publik kirimHeader()

Mengirim tajuk yang telah ditetapkan sebelumnya.

Contoh

wa()->getResponse()->addHeader("Tipe-konten", "aplikasi/json"); wa()->getResponse()->sendHeaders();

Menyetel nilai entri cookie menggunakan fungsi setcookie PHP.

Parameter

  • $nama

    Rekam ID.

  • $nilai

    Nilai entri.

  • $kedaluwarsa

    waktu kedaluwarsa.

  • $jalan

    Jalur ke "subdirektori" URI di mana nilai entri valid.

  • $domain

    Nama domain yang nilai entrinya valid.

  • $aman

    Bendera yang menunjukkan bahwa penulisan hanya tersedia jika nilainya ditransmisikan melalui protokol HTTPS.

  • $http_only

    Bendera yang menunjukkan bahwa nilai catatan hanya tersedia melalui protokol HTTP dan tidak dapat diakses melalui skrip klien (JavaScript).

Contoh

wa()->getResponse()->setCookie("code", $code, time() + 30 * 86400, null, "", false, true);

fungsi publik setMeta ($nama, $nilai = null)

Menetapkan nilai data META. Nilai ini tersedia di template Smarty menggunakan metode ($wa->meta()).

Parameter

  • $nama

    Pengidentifikasi elemen data META: judul halaman ("judul"), kata kunci tag META ("kata kunci") dan deskripsi ("deskripsi").

  • $nilai

    Nilai elemen.

Contoh

wa()->getResponse()->setMeta("kata kunci", $kata kunci);

fungsi publik atur status ($kode)

Mengatur status respons server.

Parameter

  • $kode

    Kode status

Contoh

wa()->getResponse()->setStatus(404);

fungsi publik setJudul ($judul)

Menyetel judul (TITLE) halaman. Konten judul tersedia di template Smarty menggunakan metode ($wa->title()).

Objek yang dijelaskan adalah alat yang sangat berguna dan kuat. Objek ini memiliki beberapa metode, deskripsinya diberikan di bawah ini:

Koleksi:

Metode:

Properti:

Respon.Koleksi kue

Koleksi Cookies menetapkan nilai untuk cookie. Jika cookie yang ditentukan tidak ada, cookie akan dibuat. Jika cookie ada, cookie akan mengambil nilai baru dan yang lama akan dimusnahkan.

Response.Cookies(cookie) [(key) | . atribut ] = nilai

Parameter:

  • Kue kering- Nama kue
  • kunci- Parameter opsional. Jika ditentukan, maka cookie adalah direktori (bersarang) dan kuncinya adalah kumpulan nilai.
  • atribut- Informasi tertentu tentang cookie itu sendiri. Parameter ini dapat berupa salah satu dari berikut ini:
  • berarti- Menentukan nilai yang akan diberikan ke kunci atau atribut yang diberikan.
Nama Keterangan
domain Rekam saja. Jika ditentukan, cookie hanya dikirim berdasarkan permintaan dari domain tersebut.
kedaluwarsa Rekam saja. Tanggal cookie kedaluwarsa. Tanggal ini harus ditetapkan agar cookie dapat ditulis ke klien HDD setelah akhir sesi. Jika atribut ini tidak disetel, maka tanggal kedaluwarsa cookie dianggap sebagai tanggal saat ini. Cookie akan kedaluwarsa segera setelah sesi berakhir.
memiliki kunci Hanya membaca. Menunjukkan apakah cookie berisi kunci yang diberikan.
Jalur Rekam saja. Jika ditentukan, cookie hanya diteruskan berdasarkan permintaan dari jalur tersebut. Jika parameter tidak disetel, maka jalur ke aplikasi akan digunakan.
aman Rekam saja. Menunjukkan apakah cookie akan dilindungi atau tidak.

Komentar:

Jika cookie dengan kunci dibuat seperti yang ditunjukkan pada skrip berikut,

<% Response.Cookies("mycookie")("type1") = "сахар" Response.Cookies("mycookie")("type2") = "печенье" %>

maka header berikut akan dikirim:

Set-Cookie:MYCOOKIE=TYPE1=gula&TYPE2=cookies

Jika Anda menetapkan nilai ke mycookie tanpa menggunakan kunci, maka tindakan ini akan menghancurkan kunci tipe1 dan tipe2. Contohnya:<% Response.Cookies("myCookie") = "шоколадный зефир" %>

Pada contoh sebelumnya, kunci tipe1 dan tipe2 akan dimusnahkan dan nilainya akan hilang. Mycookie sekarang akan berisi nilai cokelat marshmallow.

Anda juga dapat memeriksa keberadaan kunci tertentu dengan cara berikut:

<% = Response.Cookies("myCookie").HasKeys %>

Jika TRUE ditampilkan, maka kunci seperti itu ada, dalam kasus FALSE - tidak.

Tanggapan.Metode Tulis

Respon.Tulis variabel_atau_nilai

Parameter:

  • variabel_atau_nilai- Data yang akan ditampilkan pada layar browser melalui HTML. Parameter ini dapat berupa jenis apa pun yang didukung oleh VisualBasic Scripting Edition. Artinya, data dapat berupa: tanggal, string, karakter, nilai numerik. Nilai parameter ini tidak boleh berisi kombinasi %>. Sebagai gantinya, Anda dapat menggunakan kombinasi yang setara %\>. Server web akan menerjemahkan urutan ini ke urutan yang diperlukan saat skrip dijalankan.

Contoh berikut menunjukkan cara kerja metode Response.write untuk mencetak pesan ke klien.

Saya hanya akan memberitahu Anda:<%Response.write "Привет всем!!!"%>Dan namamu<%Response.write(Request.Form("name"))%>

Contoh berikut menambahkan tag HTML ke halaman web. Karena metode ini tidak dapat berisi kombinasi %>, kami menggunakan urutan %\>. Jadi contoh skrip:

<% Response.write "

" %>

Outputnya akan menjadi baris:

Respon.Metode pengalihan

Response.Redirect URL (URL - Uniform Resource Descriptor)

Parameter:

  • URL- Parameter adalah deskriptor sumber daya generik. Ini menunjukkan kapan browser harus diarahkan.

Komentar:

Setiap kejadian metode ini antara tag Dan halaman web akan diabaikan. Metode ini hanya dapat digunakan di header halaman HTML. Metode ini akan meneruskan header ke browser jika parameter URL objek dihilangkan dalam bentuk berikut:

HTTP/1.0 302 Objek Dipindahkan URL Lokasi

Respon. Metode akhir

Respon Selesai

Komentar:

Jika properti Response.Buffer telah disetel ke TRUE, maka memanggil metode Response.End akan menghapus buffer, mendorong data keluar darinya ke klien. Jika Anda tidak ingin menampilkan data kepada pengguna, Anda harus memanggil metode berikut:

<% Response.Clear Response.End %>

Respon. Metode AddHeader

Metode AddHeader menambahkan header HTML dengan nilai tertentu. Metode ini selalu menambahkan header baru ke respons ke browser klien. Metode ini tidak menggantikan header yang ada dengan yang baru. Judul yang ditambahkan tidak dapat dihapus.

Metode ini hanya digunakan untuk tugas "lanjutan".

Response.AddHeader variabel_name, nilai

Parameter:

  • variabel_nama- Nama opsi header HTML baru.
  • berarti- Nilai yang akan disetel untuk diingat di header.

Catatan:

Agar metode berfungsi dengan benar, nama_variabel tidak boleh berisi karakter garis bawah (_). Set ServerVariables menginterpretasikan garis bawah sebagai tanda hubung di header. Misalnya, skrip berikut memaksa server untuk menemukan parameter dari header HTML yang disebut MY-HEADER.

<% Requset.ServerVariables("HTTP_MY_HEADER") %>

Karena protokol HTTP mengharuskan semua parameter header diteruskan sebelum awal isi halaman HTML, Anda harus memanggil metode AddHeader dalam skrip Anda sebelum deskripsi dimulai. ... . Ada satu pengecualian. Jika nilai properti Buffer disetel ke true (benar), maka Anda dapat menulis AddHeader kapan saja dalam skrip, tetapi sebelum panggilan pertama ke metode Flush. Jika tidak, memanggil metode AddHeader akan menimbulkan kesalahan.

Dua file .asp berikutnya menunjukkan poin terakhir.

<% Response.AddHeader "Внимание!", "Текст сообщения об ошибке"%> teks Anda di halaman

Dalam contoh ini, halaman tidak disangga. Script berfungsi namun AddHeader dipanggil sebelum server menghasilkan output HTML ke klien.

<% Response.Buffer = true %> ini dia beberapa informasi halaman Anda...<%Response.AddHeader "Внимание!", "сообщение об ошибке"%> <%Response.Flush%> <%Response.Write("некий текст")%>

Dalam contoh kedua, halaman disangga dan, sebagai hasilnya, server tidak mengirim teks ke klien hingga skrip itu sendiri berakhir atau hingga metode Flush ditemukan. Anda dapat menggunakan metode ini untuk mengirim beberapa salinan dari beberapa parameter header dengan nilai yang berbeda, seperti header WWW-Authenticate.

Respons Metode.AppendToLog

Metode AppendToLog menambahkan baris ke akhir file log server web. Anda dapat memanggil metode ini sebanyak yang Anda butuhkan. Setiap kali metode dipanggil, string yang Anda tentukan akan ditulis ke file laporan server.

Response.AppendToLog nilai

Parameter:

  • berarti- Teks yang akan ditambahkan ke file laporan server web. String ini tidak boleh berisi karakter koma (,). Selain itu, panjang total baris yang ditambahkan tidak boleh melebihi 80 karakter.

Catatan:

Untuk menggunakan fitur ini, Anda harus mengaktifkan opsi Kueri URI di panel "Properti Pencatatan Lanjutan" untuk server web ini di IIS.

Respon.MetodeBinaryWrite

Metode BinaryWrite memungkinkan Anda untuk menulis informasi yang ditentukan ke output HTTP saat ini tanpa konversi karakter apa pun. Metode ini berguna untuk menampilkan informasi non-string, seperti data biner yang diperlukan oleh suatu aplikasi.

Respon.BinaryWrite data

Parameter:

  • data- Data yang ditujukan untuk keluaran HTTP.

Jika Anda memiliki objek yang menghasilkan larik byte, Anda dapat menggunakan panggilan berikut ke metode ini untuk meneruskan larik itu ke beberapa aplikasi yang berjalan di mesin klien.

<% Set BinGen = Server.CreateObject(My.BinaryGenerator) Pict = BinGen.MakePicture Response.BinaryWrite Pict %>

Tanggapan. Metode yang Jelas

Metode Clear menghapus semua output HTML yang di-buffer. Namun, metode ini tidak menghapus informasi header dari buffer. Anda dapat menggunakan metode ini untuk mengelola kesalahan. Namun, metode ini akan menghasilkan kesalahan jika properti Response.Buffer tidak benar.

Properti Response.CacheControl

Properti ini menimpa nilai default. Saat Anda menyetel properti ke Publik, server proxy dapat menyimpan output yang dihasilkan oleh ASP.

Response.CacheControl [= header kontrol cache]

Parameter:

  • Header kontrol cache- Opsi kontrol judul ini dapat berupa Publik atau Pribadi.

Respon. Properti CharSet

Properti CharSet memungkinkan Anda untuk menambahkan nama tabel kode karakter (misalnya, WINDOWS-1251) ke header HTML, string tipe konten (tipe konten).

Response.CharSet codetable_name

Parameter:

  • codetable_name- String yang menentukan tabel kode untuk halaman HTML yang diberikan. Nama tabel kode ini akan ditambahkan ke header file HTML di bawah parameter "content-type".

Untuk halaman ASP yang tidak menggunakan properti Response.Charset, parameter "tipe konten" di header akan menjadi:

tipe konten:teks/html

Jika file ASP berisi perintah

<%Response.Charset("Windows-1251")%>

kemudian di header bidang tipe konten akan terlihat seperti

tipe konten:teks/html; charset=Windows-1251

Komentar:

Fungsi ini menyisipkan string apa pun ke dalam header dan tidak memeriksa apakah sudah benar.

Jika halaman berisi beberapa tag Response.Charset, maka setiap tag berikutnya akan mengganti nilainya dengan nilainya sendiri.

Properti Response.ContentType

Properti ContentType memungkinkan Anda untuk menentukan tipe (tipe) konten file HTML. Jika properti ini tidak digunakan, defaultnya adalah teks/html.

Response.ContentType [=content_type]

Parameter:

  • Jenis konten- String yang menjelaskan tipe konten HTML. String ini biasanya berbentuk "tipe/subtipe", di mana tipe adalah kategori konten utama dan subtipe menentukan tipe konten. Untuk mendapatkan daftar lengkap jenis yang didukung - lihat dokumentasi browser Anda atau spesifikasi HHTP.

Contoh berikut mengilustrasikan pengaturan tipe konten ke Format Definisi Saluran (Saluran Tekan).

<% Response.ContentType = "application/x-cdf" %>

Contoh kedua menunjukkan pengaturan properti ke nilai yang paling umum diketahui.

<% Response.ContentType = "text/HTML" %> <% Response.ContentType = "image/GIF" %> <% Response.ContentType = "image/JPEG" %>

Respon.Kedaluwarsa properti

Properti Expires menentukan lamanya waktu hingga halaman HTML yang di-cache oleh browser dianggap valid (kedaluwarsa). Jika pengguna meminta halaman yang di-cache dari browser yang belum kedaluwarsa, browser mengembalikannya langsung dari cache-nya.

Tanggapan.Kedaluwarsa [=angka]

Parameter:

  • nomor- Jumlah waktu dalam menit sebelum halaman dianggap "terlambat". Menyetel nilai ini ke 0 menyebabkan halaman yang diberikan menjadi "kedaluwarsa" segera.

Komentar:

Jika properti ini disetel lebih dari sekali pada halaman, maka nilai terkecil yang digunakan.

Response.ExpiresAbsolute property

Properti ExpiresAbsolute menentukan waktu dan tanggal setelah halaman HTML yang di-cache oleh browser dianggap kedaluwarsa. Jika pengguna meminta halaman yang di-cache dari browser yang belum kedaluwarsa, browser mengembalikannya langsung dari cache-nya. Jika waktu ditentukan (dan tanggal ditentukan), maka "periode retensi" halaman berakhir pada tengah malam hari itu. Jika waktu atau tanggal tidak ditentukan, maka nilai akan ditetapkan sesuai dengan hari dan waktu skrip dijalankan.

Response.ExpiresAbsolute [= [tanggal] [waktu]]

Parameter:

  • tanggal- Menunjukkan tanggal kedaluwarsa "periode retensi". Format tanggal harus sesuai dengan standar RFC-1123.
  • waktu- Menunjukkan waktu ketika halaman kedaluwarsa "periode retensi". Nilai ini dikonversi ke format GMT (Greenwich Mean Time) sebelum header dikirim ke klien.

Komentar:

Jika properti ini ditentukan lebih dari sekali per halaman, maka waktu kedaluwarsa "periode retensi" dianggap paling cepat dari semua nilai yang ditentukan.

<% Response.ExpiresAbsolute = #May 31,1998 13:30:15# %>

Response.IsClientConnected properti

Properti ini adalah nilai hanya-baca, yang berarti tidak ada nilai yang dapat diberikan ke properti ini. Properti ini menunjukkan apakah klien terhubung atau belum terhubung ke server, seperti yang didefinisikan di bagian terakhir dari Response.Write.

Respon.IsClientConnected()

Komentar:

Properti ini memungkinkan Anda untuk menentukan kapan pengguna terhubung dan ketika dia terputus dari server. Misalnya, lamanya waktu antara saat server merespons dan saat klien membuat permintaan memberikan keyakinan bahwa klien masih terhubung dan masuk akal untuk terus mengeksekusi skrip.

<% "посмотрим, подключен ли пользователь If Not Response.IsClientConnected Then "получаем номер сессии и закрываем сессию Shutdownid = Session.SessionID "подготовка к закрытию сессии Shutdown(Shutdownid) End If %>

Response.Pis properti

Properti ini memungkinkan Anda untuk menambahkan nilai bidang label foto ke header respons.

Respon.PICS(PICSLabel)

Parameter

  • Label Foto- String yang telah dikonversi ke format PICS - label. Nilai yang ditentukan dalam parameter ini ditambahkan ke header respons di bidang PICS.

Untuk file ASP termasuk:

<% Response.PICS("(PICS-1.1 label pada peringkat " & chr(34) & "1997.01.05T08:15-0500" hingga "1999.12.31T23:59-0000" (v 0 s 010 n 0))%>

Header berikutnya akan dibuat

PICS-label:(PICS-1.1 label pada peringkat "1997.01.05T08:15-0500" hingga "1999.12.31.T23:59-0000" (v 0 s 0 1 0 n 0))

Komentar:

Properti ini memungkinkan Anda untuk menyisipkan baris apa pun di header, terlepas dari apakah baris tersebut valid atau tidak.

Jika halaman berisi banyak tag yang berisi Response.PICS, maka setiap tag berikutnya akan menggantikan nilai yang sebelumnya.

Respon.Properti status

Properti ini memungkinkan Anda untuk menentukan string status yang dikembalikan oleh server. Nilai status ditentukan dalam spesifikasi HTTP.

Response.Status = state_description

Parameter

  • state_description- String yang berisi tiga digit angka yang menunjukkan kode status dan juga deskripsi singkat tentang kode ini. Misalnya, 310 Bergerak Permanen.

Contoh berikut menunjukkan pengaturan status:

<% Response.Status = "401 Unauthorized" %>

Komentar:

Gunakan properti ini untuk mengubah string yang dikembalikan oleh server.