各位老铁们,大家好,今天由我来为大家分享python服务器,以及一行Python代码让你的电脑变成HTTP服务器与同事分享文件的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

一、python通过get,post方式发送请求和接收响应

本文实例讲述了python通过get,post方式发送请求和接收响应的方法。分享给大家供大家参考。

具体如下:

测试用CGI,名字为test.py,放在apache的cgi-bin目录下:

#!/usr/bin/python

import cgi

def main():

print Content-type: text/htmln

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中。

方法一、

?

7

8

import urllib

import urllib2

url=

req= urllib2.Request(url)

print req

res_data= urllib2.urlopen(req)

res= res_data.read()

print res

方法二、

?

7

import lib

url=

conn= lib.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

pythonhttp服务器 一行Python代码让你的电脑变成HTTP服务器与同事分享文件

import urllib2

test_data={ServiceCode:aaaa,b:bbbbb}

test_data_urlencode= urllib.urlencode(test_data)

requrl=

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

print req

res_data= urllib2.urlopen(req)

res= res_data.read()

print res

方法二、

11

import urllib

import lib

test_data={ServiceCode:aaaa,b:bbbbb}

test_data_urlencode= urllib.urlencode(test_data)

requrl=

headerdata={Host:192.168.81.16}

conn= lib.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,lib的区别

lib实现了和s的客户端协议,但是在python中,模块urllib和urllib2对lib进行了更上层的封装。

介绍下例子中用到的函数:

1、HTTPConnection函数

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

这个是构造函数,表示一次与服务器之间的交互,即请求/响应

host标识服务器主机(服务器IP或域名)

port默认值是80

strict模式是False,表示无法解析服务器返回的状态行时,是否抛出BadStatusLine异常

例如:

conn= lib.HTTPConnection(192.168.81.16,80)与服务器建立。

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

这个是向服务器发送请求

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

例如:

method=POST或method=Get

url请求的资源,请求的资源(页面或者CGI,我们这里是CGI)

例如:

url=

或者

url=

body需要提交到服务器的数据,可以用json,也可以用上面的格式,json需要调用json模块

headers请求的头headerdata={Host:192.168.81.16}

例如:

?

test_data={ServiceCode:aaaa,b:bbbbb}

test_data_urlencode= urllib.urlencode(test_data)

requrl=

headerdata={Host:192.168.81.16}

conn= lib.HTTPConnection(192.168.81.16,80)

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

conn在使用完毕后,应该关闭,conn.close()

3、HTTPConnection.getresponse()函数

这个是获取响应,返回的对象是HTTPResponse的实例。

4、HTTPResponse介绍:

HTTPResponse的属*如下:

read([amt])获取响应消息体,amt表示从响应流中读取指定字节的数据,没有指定时,将全部数据读出;

getheader(name[,default])获得响应的header,name是表示头域名,在没有头域名的时候,default用来指定返回值

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

例如:

?

1

2

3

4

5

date=response.getheader(date);

print date

resheader=

resheader=response.getheaders();

print resheader

列形式的响应头部信息:

?

1

2

3

[(content-length, 295),(aept-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程序设计有所帮助。

二、一行Python代码让你的电脑变成HTTP服务器与同事分享文件

搭建一个简单的HTTP服务器,让同事或上传文件,只需一行Python代码。通过Python,你可以快速在局域网内提供服务,提高传输效率。只需在命令行输入以下代码:

Python3命令:python-m .server 8000

或Python2命令:python-m SimpleHTTPServer 8000

指定端口号(8000)以避免冲突,这将显示当前目录下的文件和目录。默认端口为8000。通过浏览器输入“服务器IP:8000”访问服务器,显示当前工作目录下的文件。

然而,命令运行时无法后台执行,按Ctrl+ C会关闭端口。在Linux环境下使用ifconfig查看本机IP,然后在浏览器栏输入IP+端口号进行访问。手机或其他设备也可以访问并文件。

若需上传文件,运行特定的Python脚本,手机或其他设备即可通过浏览器上传文件至服务器。在服务器端,上传成功后会显示相应信息。此服务器支持文件,以及打开HTML、PDF等文件。若文件夹中包含index.html,将打开网页。反之,可文件。

简而言之,利用Python搭建的HTTP服务器,不仅能为同事提供高效、便捷的文件服务,还支持文件上传。实现这一功能只需简单的Python命令,大大提高团队协作效率。希望此教程对您有所帮助,欢迎分享给更多需要的朋友。

三、Python实现自定义HTTP代理服务器

构建自定义的HTTP代理服务器在Python中是可行的,通过利用内置的socket和.server模块,或者采用更高级的第三方库如mitmproxy或Twisted。此类代理服务器在客户端与目标服务器间转发HTTP请求和响应,同时提供自定义操作如日志记录、请求修改或响应拦截等。

简述一个使用Python标准库socket模块构建基础HTTP代理服务器的示例代码。请注意,此代码是基础与简化版本,仅用作演示基础HTTP代理服务器搭建。实际应用中,必须处理复杂请求和响应,包括POST请求、HTTPS请求、解析请求头、处理响应头、管理持久连接等。

对于更复杂的需求,建议采用成熟的第三方库,例如mitmproxy。它提供丰富的功能和强大的扩展*,便于构建自定义的HTTP代理服务器。