Web klijenti

Web klijent je program koji služi kao intefejs za povezivanje i razmenu podataka sa serverom. Klijent obično serveru šalje zahteve, koje server obrađuje i klijentu vraća relutate obrade. Najčešće korišćeni klijenti su brauzeri kao što su Chrome, Firefox, Opera itd.

Brauzeri se koriste kao interfejs i za web aplikacije kojima ćemo se mi baviti. Posebni klijent programi se razvijaju u slučajevima kada server treba da obezbedi podatke koje klijent koristi za dalju obradu.

Jednostavan Python socket (http) klijent

Klijent:

import socket

# Kreiraj uticnicu
uticnica = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# Povezi se na server
#uticnica.connect(("216.58.208.142",80)) # Google
uticnica.connect(("localhost",8888))
# Pošalji zahtev
uticnica.send(str.encode("GET / HTTP/1.1\n\n"))

# Prihvati odgovor
while True:
            resp = uticnica.recv(2048).decode("utf-8")
            if resp == "": break
            print (resp)

# Zatvori uticnicu
uticnica.close()
print ("\nGotovo")

Detaljan opis socket programiranja možete da nađete ovde: Python socket

Složeniji Python http klijent

U Python standardnoj biblioteci se nalazi još jedan modul pomoću kojeg se mogu programirati klijenstki programi. Taj modul, http.client, korsitimo u sledećem primeru:

import http.client

## GET request
konekcija = http.client.HTTPSConnection("www.python.org")
konekcija.request("GET", "/")
odgovor = konekcija.getresponse()
print(odgovor.status, odgovor.reason)
podaci = odgovor.read()  # This will return entire content.
print (podaci)
konekcija.close()

## POST request
import urllib.parse
params = urllib.parse.urlencode({'@number': 12524, '@type': 'issue',
                                 '@action': 'show'})
headers = {"Content-type": "application/x-www-form-urlencoded",
            "Accept": "text/plain"}
konekcija = http.client.HTTPConnection("bugs.python.org")
konekcija.request("POST", "", params, headers)
odgovor = konekcija.getresponse()
print(odgovor.status, odgovor.reason)
podaci = odgovor.read()
print (podaci)
konekcija.close()

O ovom modulu možete više da saznate ovde: Python HTTP client

Ako vam ova dva načina izgledaju previše komplikovano, pokušajte sa modulom “request”, koji njie deo standardne Python biblioteke. Opisa ovog modula možete da nađete ovde: Requests: HTTP for Humans