Скажем, у меня есть следующий запрос HTTP:Python Извлечение JSON из HTTP Response
GET /4 HTTP/1.1
Host: graph.facebook.com
И сервер возвращает ответ:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Cache-Control: private, no-cache, no-store, must-revalidate
Content-Type: text/javascript; charset=UTF-8
ETag: "539feb8aee5c3d20a2ebacd02db380b27243b255"
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Pragma: no-cache
X-FB-Rev: 1070755
X-FB-Debug: pC4b0ONpdhLwBn6jcabovcZf44bkfKSEguNsVKuSI1I=
Date: Wed, 08 Jan 2014 01:22:36 GMT
Connection: keep-alive
Content-Length: 172
{"id":"4","name":"Mark Zuckerberg","first_name":"Mark","last_name":"Zuckerberg","link":"http:\/\/www.facebook.com\/zuck","username":"zuck","gender":"male","locale":"en_US"}
Поскольку заголовок Content-Lengh
зависит от длины содержимого , Я не могу просто разбить строку Content-Length: 172
. Как я могу извлечь JSON и заголовки отдельно? Они важны для моей программы. Я использую этот код, чтобы получить ответ:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("graph.facebook.com", 80))
s.send("GET /"+str(id)+"/picture HTTP/1.1\r\nHost: graph.facebook.com\r\n\r\n")
data = s.recv(1024)
s.close()
json_string = (somehow extract this)
userdata = json.loads(json_string)
split by '\ n \ n'? – tenub
a) Не было бы это '\ r \ n \ r \ n' б) Я искал все это в одной строке и немного более изящно Но спасибо за предложение – 735Tesla
зависит от вашего сервера os, но вы можете использовать оператор '|'. быстрый поиск в Google показывает [this] (http://stackoverflow.com/questions/1331815/regular-expression-to-match-cross-platform-newline-characters) – tenub