python中的http傳輸的簡單介紹

本文目錄一覽:

python 怎麼處理http post 的請求參數

import httplib, urllib

from urlparse import urlparse

def httppost(url, **kwgs):

httpClient = None

conn = urlparse(url)

try:

params = urllib.urlencode(dict(kwgs))

header = {“Content-type”: “application/x-www-form-urlencoded”,”Accept”: “text/plain”, }

httpClient = httplib.HTTPConnection(conn.netloc, conn.port, timeout=30)httpClient.request(“POST”, conn.path, params, header)response = httpClient.getresponse()

print response.status

print response.reason

print response.read()

print response.getheaders()

except Exception, e:

print e

finally:

if httpClient:

httpClient.close()

怎麼知道python發送了什麼http請求

本文實例講述了python通過get,post方式發送http請求和接收http響應的方法。分享給大家供大家參考。具體如下:

測試用CGI,名字為test.py,放在apache的cgi-bin目錄下:

#!/usr/bin/python

import cgi

def main():

print “Content-type: text/html\n”

form = cgi.FieldStorage()

if form.has_key(“ServiceCode”) and form[“ServiceCode”].value != “”:

print “h1 Hello”,form[“ServiceCode”].value,”/h1″

else:

print “h1 Error! Please enter first name./h1”

main()

python發送post和get請求

get請求:

使用get方式時,請求數據直接放在url中。

方法一、

import urllib

import urllib2

url = “test.py?ServiceCode=aaaa”

req = urllib2.Request(url)

print req

res_data = urllib2.urlopen(req)

res = res_data.read()

print res

方法二、

import httplib

url = “hest/test.py?ServiceCode=aaaa”

conn = httplib.HTTPConnection(“192.168.81.16”)

conn.request(method=”GET”,url=url)

response = conn.getresponse()

res= response.read()

print res

post請求:

使用post方式時,數據放在data或者body中,不能放在url中,放在url中將被忽略。

方法一、

import urllib

import urllib2

test_data = {‘ServiceCode’:’aaaa’,’b’:’bbbbb’}

test_data_urlencode = urllib.urlencode(test_data)

requrl = “/python_test/test.py”

req = urllib2.Request(url = requrl,data =test_data_urlencode)

print req

res_data = urllib2.urlopen(req)

res = res_data.read()

print res

方法二、

import urllib

import httplib

test_data = {‘ServiceCode’:’aaaa’,’b’:’bbbbb’}

test_data_urlencode = urllib.urlencode(test_data)

requrl = “python_test/test.py”

headerdata = {“Host”:”116″}

conn = httplib.HTTPConnection(“192.168.81.16”)

conn.request(method=”POST”,url=requrl,body=test_data_urlencode,headers = headerdata)

response = conn.getresponse()

res= response.read()

print res

對python中json的使用不清楚,所以臨時使用了urllib.urlencode(test_data)方法;

模塊urllib,urllib2,httplib的區別

httplib實現了http和https的客戶端協議,但是在python中,模塊urllib和urllib2對httplib進行了更上層的封裝。

介紹下例子中用到的函數:

1、HTTPConnection函數

httplib.HTTPConnection(host[,port[,stict[,timeout]]])

這個是構造函數,表示一次與伺服器之間的交互,即請求/響應

host 標識伺服器主機(伺服器IP或域名)

port 默認值是80

strict 模式是False,表示無法解析伺服器返回的狀態行時,是否拋出BadStatusLine異常

例如:

conn = httplib.HTTPConnection(“1.16″,80) 與伺服器建立鏈接。

2、HTTPConnection.request(method,url[,body[,header]])函數

這個是向伺服器發送請求

method 請求的方式,一般是post或者get,

例如:

method=”POST”或method=”Get”

url 請求的資源,請求的資源(頁面或者CGI,我們這裡是CGI)

例如:

url=”htti-bin/python_test/test.py” 請求CGI

或者

url=”ht_test/test.html” 請求頁面

body 需要提交到伺服器的數據,可以用json,也可以用上面的格式,json需要調用json模塊

headers 請求的http頭headerdata = {“Host”:”192.168.81.16″}

例如:

test_data = {‘ServiceCode’:’aaaa’,’b’:’bbbbb’}

test_data_urlencode = urllib.urlencode(test_data)

requrl = “hgi-bin/python_test/test.py”

headerdata = {“Host”:”192.116″}

conn = httplib.HTTPConnection(“196″,80)

conn.request(method=”POST”,url=requrl,body=test_data_urlencode,headers = headerdata)

conn在使用完畢後,應該關閉,conn.close()

3、HTTPConnection.getresponse()函數

這個是獲取http響應,返回的對象是HTTPResponse的實例。

4、HTTPResponse介紹:

HTTPResponse的屬性如下:

read([amt]) 獲取響應消息體,amt表示從響應流中讀取指定位元組的數據,沒有指定時,將全部數據讀出;

getheader(name[,default]) 獲得響應的header,name是表示頭域名,在沒有頭域名的時候,default用來指定返回值

getheaders() 以列表的形式獲得header

例如:

date=response.getheader(‘date’);

print date

resheader=”

resheader=response.getheaders();

print resheader

列形式的響應頭部信息:

[(‘content-length’, ‘295’), (‘accept-ranges’, ‘bytes’), (‘server’, ‘Apache’), (‘last-modified’, ‘Sat, 31 Mar 2012 10:07:02 GMT’), (‘connection’, ‘close’), (‘etag’, ‘”e8744-127-4bc871e4fdd80″‘), (‘date’, ‘Mon, 03 Sep 2012 10:01:47 GMT’), (‘content-type’, ‘text/html’)]

date=response.getheader(‘date’);

print date

取出響應頭部的date的值。

python里同時發送多個http請求怎麼弄

多個同進的話,使用多線程就可以,也可以使用多進程,多進程可以更好的利用多核CPU的能力。

怎麼用http上傳一個文件到伺服器 python

首先,標準HTTP協議對上傳文件等表單的定義在這裡:wwwietforg/rfc/rfc1867txt 大概數據包格式如下:

單文件:

Content-type: multipart/form-data, boundary=AaB03x

–AaB03x

content-disposition: form-data; name=”field1″

Joe Blow

–AaB03x

content-disposition: form-data; name=”pics”; filename=”file1.txt”

Content-Type: text/plain

… contents of file1.txt …

–AaB03x–

多文件:

Content-type: multipart/form-data, boundary=AaB03x

–AaB03x

content-disposition: form-data; name=”field1″

Joe Blow

–AaB03x

content-disposition: form-data; name=”pics”

Content-type: multipart/mixed, boundary=BbC04y

–BbC04y

Content-disposition: attachment; filename=”file1.txt”

其次,python上傳文件的幾種方法:

1 自己封裝HTTP的POST數據包:http//stackoverflowcom/questions/680305/using-multipartposthandler-to-post-form-data-with-python

import httplibimport mimetypesdef post_multipart(host, selector, fields, files): content_type, body = encode_multipart_formdata(fields, files) h = httplib.HTTP(host) h.putrequest(‘POST’, selector) h.putheader(‘content-type’, content_type) h.putheader(‘content-length’, str(len(body))) h.endheaders() h.send(body) errcode, errmsg, headers = h.getreply() return h.file.read() def encode_multipart_formdata(fields, files): LIMIT = ‘———-lImIt_of_THE_fIle_eW_$’ CRLF = ‘\r\n’ L = [] for (key, value) in fields: L.append(‘–‘ + LIMIT) L.append(‘Content-Disposition: form-data; name=”%s”‘ % key) L.append(”) L.append(value) for (key, filename, value) in files:

如何用Python寫一個http post請求

import urllib2

import urllib

  

#定義一個要提交的數據數組(字典)

data = {}

data[‘username’] = ‘zgx030030’

data[‘password’] = ‘123456’

  

#定義post的地址

url = ”

post_data = urllib.urlencode(data)

  

#提交,發送數據

req = urllib2.urlopen(url, post_data)

  

#獲取提交後返回的信息

content = req.read()

print content

如果解決了您的問題請採納!

如果未解決請繼續追問!

如何使用python立即發送http請求參數

首先安裝requests:

pip install requests

(附requests說明:)

然後使用python:

import requests

resp = requests.post(‘url’,{a:1, b:2})

print(resp.content)

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/291897.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-25 14:07
下一篇 2024-12-25 14:07

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29

發表回復

登錄後才能評論