Python實現HTTP GET請求

2021-07-26 02:35:07 字數 3428 閱讀 1542

在網際網路上,我們可以讓某台計算機作為伺服器。伺服器開放自己的埠,被動等待其他計算機連線。當其他計算機作為客戶,主動使用socket連線到伺服器的時候,伺服器就開始為客戶提供服務。

在python中,我們使用標準庫中的socket包來進行底層的socket程式設計。

首先是伺服器端,我們使用bind()方法來賦予socket以固定的位址和埠,並使用listen()方法來被動的監聽該埠。當有客戶嘗試用connect()方法連線的時候,伺服器使用accept()接受連線,從而建立乙個連線的socket:

# written by windy

# server side

import socket

# address

host = ''

port = 8000

reply = 'yes'

# configure socket

s = socket.socket(socket.af_inet, socket.sock_stream)

s.bind((host, port))

# passively wait, 3: maximum number of connections in the queue

s.listen(3)

# accept and establish connection

conn, addr = s.accept()

# receive message

request = conn.recv(1024)

print

'request is: ',request

print

'connected by', addr

# send message

conn.sendall(reply)

# close connection

conn.close()

socket.socket()建立乙個socket物件,並說明socket使用的是ipv4(af_inet,ip version 4)和tcp協議(sock_stream)。

然後用另一台電腦作為客戶,我們主動使用connect()方法來搜尋伺服器端的ip位址(在linux中,你可以用$ifconfig來查詢自己的ip位址)和埠,以便客戶可以找到伺服器,並建立連線:

# written by windy

# client side

import socket

# address

host = '172.20.202.155'

port = 8000

request = 'can you hear me?'

# configure socket

s = socket.socket(socket.af_inet, socket.sock_stream)

s.connect((host, port))

# send message

s.sendall(request)

# receive message

reply = s.recv(1024)

print

'reply is: ',reply

# close connection

s.close()

現在,我們寫出乙個http伺服器端:

#coding=utf-8

#python http伺服器端

'''自己編寫乙個http伺服器端使用socket

使用瀏覽器實驗

為了配合上面的伺服器程式,我已經在放置python程式的資料夾裡,儲存了乙個test.jpg檔案。我們在終端執行上面的python程式,作為伺服器端,再開啟乙個瀏覽器作為客戶端。(如果有時間,你也完全可以用python寫乙個客戶端。原理與上面的tcp socket的客戶端程式相類似。)

在瀏覽器的位址列輸入:

127.0

.0.1

:8882

文章參考位址

iphone平台http get請求

直接貼原始碼 需要注意的是httpgetrequestviewcontroller 擁有nsmutabledata receivedata 這個成員。receivedate是在 void connection nsurlconnection connection didreceiveresponse...

http get與post請求區別

1 http請求格式 在http請求中,第一行必須是乙個請求行 request line 用來說明請求型別 要訪問的資源以及使用的http版本。緊接著是乙個首部 header 小節,用來說明伺服器要使用的附加資訊。在首部之後是乙個空行,再此之後可以新增任意的其他資料 稱之為主體 body 2 get...

HttpPost與HttpGet的區別

get是從伺服器上獲取資料,post是向伺服器傳送資料。get把引數資料加到提交表單的action屬性所指的url中,值和表單內各個字段一一對應。在url中可以看得到,post是通過http post機制將表單內各個字段與其內容放在html header內一起傳送到action屬性所指的url位址,...