Perkara untuk dipelajari tentang pengaturcaraan rangkaian Android dan pembelajaran protokol Http


Pengenalan kepada bahagian ini:

Secara tidak sedar, kami akhirnya sampai ke bab pengaturcaraan rangkaian Android Apa yang kami mainkan sebelum ini semuanya berdiri sendiri, yang pastinya tidak mencukupi, kan ? Pada permulaan bahagian ini, kita akan mempelajari beberapa perkara yang berkaitan dengan pengaturcaraan rangkaian Android: Untuk apa pengaturcaraan rangkaian Android? protokol HTTP Untuk pembelajaran, gunakan kelas penghuraian Json terbina dalam untuk menghuraikan Json, beberapa kaedah umum penghuraian XML, HttpUrlConnection dan Penggunaan HttpClient, muat naik dan muat turun fail; penggunaan WebService, penggunaan WebView, komunikasi Socket, dll.!

Selain itu, kami adalah pelanggan Kandungan pelayan bukan dalam skop kami, dan Xiaozhu tidak mahir dalam hal itu: Dapat menguasai keupayaan untuk mendapatkan dan menghuraikan data yang disuap semula oleh pelayan! Baiklah, tanpa berlengah lagi, mari mulakan bahagian ini!


Tiga cara untuk Android berinteraksi dengan Internet

1.png


Pengenalan pertama kepada protokol HTTP

Dalam pembangunan sebenar, apabila kita berurusan dengan pelayan, kita biasanya menggunakan komunikasi berdasarkan protokol Http, jadi sangat penting untuk mempelajari protokol Http dengan baik. Apa yang penting, sudah tentu, kita tidak perlu memberi terlalu banyak perhatian kepada butiran, hanya mempunyai pemahaman umum! Ini semua adalah perkara konsep!


1) Apakah protokol HTTP?

Jawapan: protokol pemindahan hiperteks, protokol lapisan aplikasi protokol TCP/IP, digunakan Tentukan proses pertukaran data antara pelayar WEB dan pelayan WEB. Selepas pelanggan menyambung ke pelayan web, jika ia ingin mendapatkan pelayan web Sumber web tertentu dalam pelayan web perlu mematuhi format komunikasi tertentu Protokol HTTP digunakan untuk menentukan format untuk komunikasi antara klien dan pelayan web.

2) Perbezaan antara Http 1.0 dan Http 1.1

Jawapan: Dengan protokol 1.0, selepas pelanggan membuat sambungan dengan pelayan web, ia hanya boleh mendapatkan satu sumber web! Protokol 1.1 membolehkan pelanggan mendapatkan berbilang sumber web pada satu sambungan selepas membuat sambungan dengan pelayan web!

3) Aliran kerja asas protokol HTTP:

Jawapan: Kita perlu mengetahui dua kata nama dahulu:

  • SYN (synchronous): Isyarat jabat tangan digunakan apabila TCP/IP mewujudkan sambungan
  • ACK(Pengakuan): Aksara pengesahan untuk mengesahkan bahawa data yang dihantar telah diterima dengan betul

Kemudian muncul konsep TCP/IP tiga hala jabat tangan:

  • Pelanggan menghantar paket syn (syn = j) ke pelayan, masuk keadaan SYN_SEND, dan kemudian tunggu pelayan Sahkan
  • bahawa pelayan menerima paket syn, mengesahkan syn klien (ack = j + 1), dan pada masa yang sama menghantar paket SYN (syn=k ) kepada dirinya sendiri, Iaitu, paket SYN + ACK, pelayan memasuki keadaan SYN_RECV
  • Pelanggan menerima paket SYN + ACK dan menghantar paket pengesahan ACK (ack = k +1) ke pelayan selesai, klien dan pelayan Masukkan keadaan ESTABLISHED, lengkapkan jabat tangan tiga hala, dan kemudian kedua-duanya mula menghantar data

Jika masih belum jelas, mari lihat gambarajah skema jabat tangan tiga hala:

2.png

Faham, kan? Kemudian mari kita lihat proses operasi Http:

  • Pengguna mengklik pada url (pautan hiper) pada penyemak imbas , pelayar web mewujudkan sambungan dengan pelayan web
  • Selepas membuat sambungan, klien menghantar permintaan kepada pelayan Format permintaan ialah: Pengecam Sumber Seragam (URL) + nombor versi protokol (biasanya 1.1) + maklumat MIME (pengepala mesej berbilang) + baris kosong
  • Selepas pelayan menerima permintaan, ia akan memberikan maklumat pemulangan yang sepadan dan format pemulangan untuk: Nombor versi protokol + baris status (hasil pemprosesan) + berbilang pengepala maklumat + baris kosong + kandungan entiti (seperti HTML yang dikembalikan)
  • Pelanggan menerima maklumat yang dikembalikan oleh pelayan, memaparkannya melalui penyemak imbas, dan kemudian berkomunikasi dengan hujung perkhidmatan diputuskan; Jika ralat berlaku dalam langkah tertentu, mesej ralat akan dikembalikan kepada klien dan dipaparkan, seperti: ralat 404 klasik!

Jika proses di atas tidak jelas, kita boleh menggunakan HttpWatch atau firefox untuk menangkap pakej: PS: Laman web ujian adalah sistem pentadbiran akademik sekolah Xiaozhu Selepas memasukkan akaun dan kata laluan dan meminta log masuk, kita dapat melihat maklumat berikut:

Kandungan permintaan HTTP:

. 3.png

Kandungan yang disertakan dalam respons HTTP:

4.png

Ia jelas sekali imbas, bukan?

4) Proses perniagaan protokol Http

5.png

5) Beberapa kaedah permintaan Http

Pembangunan sebenar kaedah yang kami gunakan lebih kerap ialah Dapatkan dan Kirim, tetapi kaedah permintaan lain juga boleh digunakan dalam pembangunan sebenar, seperti PUT. Ia digunakan dalam projek sebenar Xiaozhu Untuk kemudahan semua orang, mari senaraikan semua kaedah permintaan di bawah:

  • Dapatkan: Permintaan untuk mendapatkan data yang dikenal pasti oleh Sumber Permintaan-URI <. 🎜>
  • POST: Tambahkan data baharu selepas sumber yang dikenal pasti oleh Request-URI
  • HEAD Permintaan untuk mendapatkan sumber yang dikenal pasti oleh Request-URI Resource response information pengepala
  • PUT: Minta pelayan menyimpan sumber dan gunakan Request-URI sebagai pengecamnya
  • DELETE: Minta pelayan memadam Permintaan -Sumber yang dikenal pasti oleh URI
  • TRACE: Meminta pelayan menghantar semula maklumat permintaan yang diterima, terutamanya digunakan untuk ujian atau diagnosis
  • CONNECT : Penggunaan Terpelihara pada masa hadapan
  • PILIHAN: minta untuk menanya prestasi pelayan atau pertanyaan pilihan berkaitan sumber
6) Perbandingan of Get and Post

Dua yang paling banyak digunakan, sudah tentu saya perlu membandingkannya!

  • DAPATKAN: Selepas alamat URL yang diminta, data yang diserahkan kepada pelayan dibawa dalam bentuk ?, dan berbilang data dipisahkan oleh &. Tetapi kapasiti data biasanya tidak boleh melebihi 2K, contohnya: http://xxx?username=…&pawd=… Ini ialah GET
  • POST: Ini boleh ditentukan dalam kandungan entiti yang diminta . Pelayan menghantar data, dan tiada had pada bilangan penghantaran
  • Satu lagi perkara yang perlu diperhatikan ialah kedua-dua perkara ini menghantar data, tetapi mekanisme penghantaran adalah berbeza Internet. "GET memperoleh data pelayan, dan POST menghantar data ke pelayan" Di samping itu, keselamatan GET sangat rendah, dan keselamatan Post adalah tinggi. Walau bagaimanapun, kecekapan pelaksanaan adalah lebih baik daripada kaedah Post Kami menggunakan GET semasa membuat pertanyaan, dan POST apabila menambah, memadam atau mengubah suai data. !

7) Koleksi kod status Http

Sudah tentu, kod status ini hanyalah untuk rujukan, keputusan-. membuat kuasa terletak pada pelayan (Backend) Di tangan, satu penyelesaian ialah meminta Apa yang dikembalikan oleh pelayan kepada kami ialah status, atau kaedah lain Ia paling sesuai digunakan apabila aplikasi tidak perlu mempunyai versi berbilang bahasa. Beri kami rentetan JSON maklumat hasil, dan kami hanya boleh memaparkannya secara langsung, supaya kami dapat mengurangkan rasa malas! Di bawah ialah koleksi kod status untuk rujukan: Muat turun sahaja:

  • 100~199: Permintaan berjaya diterima, pelanggan perlu menyerahkan permintaan seterusnya untuk melengkapkan keseluruhan proses
  • 200: OK, permintaan pelanggan berjaya
  • 300~399: Sumber yang diminta telah dialihkan ke alamat baharu (302,307,304)
  • 401: Permintaan tidak dibenarkan, kod status mesti ditukar dengan medan pengepala WWW-Authenticate
  • 403: Dilarang, pelayan menerima permintaan, tetapi enggan menyediakan perkhidmatan
  • 404: Tidak Ditemui, sumber yang diminta tidak wujud, tidak perlu mengatakan ini
  • 500: Ralat Pelayan Dalaman, ralat yang tidak dijangka berlaku dalam pelayan
  • 503: Pelayan Tidak Tersedia, pelayan pada masa ini tidak dapat memproses permintaan pelanggan dan mungkin kembali normal selepas tempoh masa

8) Ciri-ciri protokol HTTP

Selagi anda tahu perkara berkonsepkan, jangan hafal sahaja daripada Ensiklopedia Baidu:

1. Sokong mod klien/pelayan.

2. Mudah dan pantas: Apabila pelanggan meminta perkhidmatan daripada pelayan, ia hanya perlu menghantar kaedah dan laluan permintaan. Kaedah permintaan yang biasa digunakan termasuk GET, KEPALA, JAWATAN. Setiap kaedah menentukan jenis hubungan yang berbeza antara klien dan pelayan. Oleh kerana kesederhanaan protokol HTTP, saiz program pelayan HTTP adalah kecil dan kelajuan komunikasi sangat pantas.

3. Fleksibel: HTTP membenarkan penghantaran sebarang jenis objek data. Jenis yang dipindahkan ditandakan dengan Jenis Kandungan.

4. Tiada sambungan: Maksud tiada sambungan ialah mengehadkan setiap sambungan kepada hanya memproses satu permintaan. Selepas pelayan memproses permintaan pelanggan, Selepas menerima respons daripada pelanggan, sambungan diputuskan. Kaedah ini menjimatkan masa penghantaran.

5. Tanpa Status: Protokol HTTP ialah protokol tanpa kewarganegaraan. Stateless bermakna bahawa protokol tidak mempunyai keupayaan memori untuk pemprosesan transaksi. Kekurangan status bermakna jika pemprosesan berikutnya memerlukan maklumat sebelumnya, ia mesti dihantar semula, yang boleh mengakibatkan peningkatan dalam jumlah data yang dipindahkan setiap sambungan. Sebaliknya, pelayan bertindak balas lebih cepat apabila ia tidak memerlukan maklumat sebelumnya.

PS: Protokol tujuh lapisan OSI dan model empat lapisan TCP tidak akan dijelaskan dalam siri asas~ Jika anda berminat, anda boleh mempelajarinya sendiri!


Ringkasan bahagian ini:

Bahagian ini menerangkan alatan yang perlu kami lengkapkan dalam pembangunan Android yang berkaitan dengan rangkaian, serta protokol HTTP Konsep yang berkaitan, saya percaya semua orang sudah mempunyai imej yang samar-samar tentang interaksi antara terminal mudah alih Android dan pelayan Mari kita kaji dalam bahagian seterusnya. Minta pengepala dan pengepala respons protokol Http! Itu sahaja untuk bahagian ini, terima kasih~