2010-09-08 100 views
0

我正在学习Python语言。我想知道关于拆分HTTP请求从http请求中分离URL

GET /en/html/dummy.php?name=MyName&married=not+single &male=yes HTTP/1.1 

Host: www.explainth.at 
User-Agent: Mozilla/5.0 (Windows;en-GB; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 
Accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 
Accept-Language: en-gb,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 300 
Connection: keep-alive 
Referer: http://www.explainth.at/en/misc/httpreq.shtml 

我想GET和主机(粗体字母)后的部分结合起来..

GET /en/html/dummy.php?name=MyName &结婚=不+单&男性= YES HTTP/1.1

主持人:www.explainth.at

如何可以做到?

回答

0

您必须按\r\n字节拆分HTTP请求。 (窗口上的换行标记)

1

目前尚不清楚您为什么要这样做,背景或目标是什么,或者数据如何到达您的程序。但是,Python对其字符串类型支持许多有用的字符串操作。所以,如果你有一个包含所有这些文本字符串,那么你可能会发现splitlines方法有用,有一些名单切片沿着:

S =“”“\ ... GET/EN /html/dummy.php?name=MyName &已婚=不是+单身&男=是HTTP/1.1 ...主持人:www.explainth.at ...用户代理:Mozilla/5.0(Windows; GB; rv:1.8.0.11)Gecko/20070312 Firefox/1.5.0.11 ...接受:text/xml,text/html; q = 0.9,text/plain; q = 0.8,image/png,/; q = 0.5 ... “'”“ s.splitlines()[:2] ['GET /en/html/dummy.php?name=MyName &已婚=未单身& male = yes HTTP/1.1','Host:www.explainth .AT']

当然,如果你正在写的任何一种真正的HTTP服务器软件,这是不太可能是正确的做法(有几乎为零的原因,在这样的操作低级别,如果你需要的话,你几乎可以肯定地想写或重用一个真正的HTTP解析器)。所以你可能想问一个更精确的问题。