博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP协议以及PYTHON开发技巧
阅读量:6821 次
发布时间:2019-06-26

本文共 1599 字,大约阅读时间需要 5 分钟。

分类:
85人阅读
(0)
  

        http协议的相关知识应该都很清楚,这里简单回顾下其流程。首先HTTP底层是利用TCP进行通讯的;其次,HTTP本身协议是面向无连接的:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

        Python采用httplib库进行HTTP通讯,用法很简单:

[python]
  1. import httplib #导入httplib库  
  2. conn = httplib.HTTPConnection("10.197.32.136",8080#建立http链接,只需要IP地址和端口  
  3. conn.request("POST","/RealTimeServer/WebSocketDemo",str,{}) #发送url请求  
  4. response = conn.getresponse() #获取返回信息  
  5. conn.close() #关闭链接  
import httplib #导入httplib库	conn = httplib.HTTPConnection("10.197.32.136",8080) #建立http链接,只需要IP地址和端口	conn.request("POST","/RealTimeServer/WebSocketDemo",str,{}) #发送url请求	response = conn.getresponse() #获取返回信息	conn.close() #关闭链接

         request函数是非阻塞函数,也就是说,它向服务器发送了url请求之后,可以正常运行之后的任务。

         getresponse函数是阻塞函数,如果没有收到服务器的返回信息,程序将无法继续。

         close函数在任何地方都可以调用,因此,如果无需服务器返回信息,则可以在发送请求之后就关闭链接。

         请注意,Httplib无法连续发送两个request,例如:

[python]
  1. conn.request("POST","/RealTimeServer/WebSocketDemo",str1,{})  
  2. conn.request("POST","/RealTimeServer/WebSocketDemo",str2,{})   
conn.request("POST","/RealTimeServer/WebSocketDemo",str1,{})	conn.request("POST","/RealTimeServer/WebSocketDemo",str2,{})

        

         程序将会抛异常,并且关闭。因为http协议本身一次链接只支持一个request,在收到response或者关闭才能开启下一次链接。所以,正常的程序应该是:

 

[python]
  1. conn.request("POST","/RealTimeServer/WebSocketDemo",str1,{})  
  2. conn.close()   
  3. conn.request("POST","/RealTimeServer/WebSocketDemo",str2,{})   
conn.request("POST","/RealTimeServer/WebSocketDemo",str1,{})	conn.close() 	conn.request("POST","/RealTimeServer/WebSocketDemo",str2,{})

或者:

[python]
  1. conn.request("POST","/RealTimeServer/WebSocketDemo",str1,{})  
  2. response = conn.getresponse()  
  3. conn.request("POST","/RealTimeServer/WebSocketDemo",str2,{})   

转载地址:http://omozl.baihongyu.com/

你可能感兴趣的文章
Get system clipboard
查看>>
windows环境eclipse开发C++程序
查看>>
svn 常用命令总结
查看>>
Linux下利用msmtp+mail+shell来发送邮件。
查看>>
Tomcat全攻略
查看>>
make: *** linux-2.6.36.4/arch/arm: Is a directo...
查看>>
android http连接阻塞超时问题
查看>>
异常处理
查看>>
线性插值针对位置量和角度量
查看>>
关于方法快的理解
查看>>
sublime text2配置
查看>>
library 'system/lib/libhoudini.so' not find
查看>>
TCP UDP socket debug tools
查看>>
网页矢量图在组态软件中的应用
查看>>
disabled by the php.ini setting phar.readonly
查看>>
mysql远程连接
查看>>
application 启动多次
查看>>
PHP学习笔记 1 ----页面下拉框回显
查看>>
在Array原型链上扩展remove,contain等方法所遇到的坑
查看>>
linux 内存屏障 && C++11
查看>>