2010-09-08 12 views
0

J'étudie langage Python. Je veux savoir sur requête HTTP divisionURL de séparation requête http

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 

Je veux combiner la partie après GET et hôte (en caractères gras) ..

GET /en/html/dummy.php?name=MyName & marié = pas + simple & mâle = yes HTTP/1.1

hôte: www.explainth.at

Comment ça peut se faire?

Répondre

0

Vous devez diviser requête HTTP par \r\n octets. (Marqueur de saut de ligne sur les fenêtres)

1

On ne sait pas pourquoi vous voulez faire cela, ce que le contexte ou le but est, ou comment ces données arrive dans votre programme. Cependant, Python prend en charge un certain nombre d'opérations de chaînes utiles sur son type de chaîne. Donc, si vous avez une chaîne contenant tous ce texte, vous trouverez peut-être la méthode lignes de division utile, ainsi que certains tranchage de la liste:

s = « » "\ ... GET/fr /html/dummy.php?name=MyName & marié = non + célibataire & homme = oui HTTP/1.1 ... Hôte: www.explainth.at ... Utilisateur-Agent: Mozilla/5.0 (Windows; GB; rv: 1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 ... Accepter: texte/xml, texte/html; q = 0.9, texte/uni; q = 0.8, image/png, /; q = 0,5 ... "" " s.splitlines() [: 2] ['GET /fr/html/dummy.php?name=MyName & marié = non + simple & homme = oui HTTP/1.1', 'Hôte: www.explainth .at ']

Bien sûr, si vous écrivez une sorte de vrai logiciel de serveur HTTP, il est peu probable d'être la bonne approche (il y a presque nulle raison de fonctionner à une telle niveau bas, et si vous devez vous voulez certainement d'écrire ou de réutiliser un véritable analyseur HTTP au lieu). Donc, vous voudrez peut-être poser une question plus précise.