第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有什么方法可以通過給定的請求格式文本來初始化 HTTP 請求嗎?

有什么方法可以通過給定的請求格式文本來初始化 HTTP 請求嗎?

不負(fù)相思意 2023-06-27 13:41:30
我有一個 GET 請求格式的文本:GET /40x.jpg HTTP/1.1\r\n\Host: ns.pb.cachecn.net\r\n\Connection: keep-alive\r\n\Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n\User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1636.2 Safari/537.36\r\n\Accept-Encoding: gzip,deflate,sdch\r\n\Accept-Language: zh-CN,zh;q=0.8\r\n\\r\n"我們知道Python中有三種模塊方式來創(chuàng)建HTTP請求:urllib2/urllibhttplib/urllibRequests但是是否可以通過導(dǎo)入給定的文本來創(chuàng)建 HTTP 請求?我的意思是使用 a string = the GET request text,并使用這個變量string來創(chuàng)建 HTTP 請求。不要使用很多步驟,因?yàn)閰^(qū)分request header,很復(fù)雜request body。
查看完整描述

3 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個贊

庫 ( urllib2/urllib, httplib/urllib, Requests) 被封裝以方便高級使用。


如果你想發(fā)送格式化的HTTP請求文本,你應(yīng)該考慮Python套接字庫。


有一個套接字示例:


import socket


get_str = 'GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36\r\nAccept: */*\r\n\r\n'%("/", "www.example.com")


def get(hostname, port):

    sock = socket.socket()

    sock.connect((hostname, port))


    b_str = get_str.encode("utf-8")

    sock.send(b_str)


    response = b''

    temp = sock.recv(4096)

    while temp:

        temp = sock.recv(4096)

        response += temp


    return response.decode(encoding="utf-8")


res = get(hostname="www.example.com", port=80)

print(res)


查看完整回答
反對 回復(fù) 2023-06-27
?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個贊

如果您真的非常愿意,您可以欺騙http.client.HTTPSConnection(或http.client.HTTPConnection對于普通的 HTTP 連接)做您想做的事情。這是Python 3代碼;在Python 2中應(yīng)該可以使用不同的導(dǎo)入和常規(guī)字符串而不是字節(jié)。


import http.client


# Requesting https://api.ipify.org as a test

client = http.client.HTTPSConnection('api.ipify.org')

# Send raw HTTP. Note that the docs specifically tell you not to do this

# before the headers are sent.

client.send(b'GET / HTTP/1.1\r\nHost: api.ipify.org\r\n\r\n')

# Trick the connection into thinking a request has been sent. We are

# manipulating the name-mangled __state attribute of the connection,

# which is very, very ugly.

client._HTTPConnection__state = 'Request-sent'

response = client.getresponse()

# should print the response body as bytes, in this case e.g. b'123.10.10.123'

print(response.read())

請注意,我不建議您這樣做;這是一個非常令人討厭的黑客行為。盡管您明確表示不想解析原始請求字符串,但這絕對是正確的做法。


查看完整回答
反對 回復(fù) 2023-06-27
?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個贊

您可以將該字符串寫入連接到 HTTP 服務(wù)器端口的套接字對象,但這是發(fā)出請求的相當(dāng)困難的方法。我建議使用 requests 包。它真的很簡單又方便。



查看完整回答
反對 回復(fù) 2023-06-27
  • 3 回答
  • 0 關(guān)注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號