HTTP协议以及PYTHON开发技巧

HTTP协议以及PYTHON开发技巧 - lrenjundk的专栏 - 博客频道 - CSDN.NET

HTTP协议以及PYTHON开发技巧

分类: Python 网络协议 85人阅读 评论(0) 收藏 举报
  

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

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

[python] view plain copy print ?
  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() #关闭链接  

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

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

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

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

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

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

 

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

或者:

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

你可能感兴趣的:(python)