2011-10-28 11 views
5

Chcę odczytać surowe żądanie HTTP w Django 1.3.Odczytywanie surowego żądania HTTP w Django 1.3

Czy istnieje prosty sposób na zrobienie tego?

Próbowałem następujących bez powodzenia:

clength = int(request.META.get("CONTENT_LENGTH")) 
data = request.read(1000) 
# data comes out empty 

próbowali też:

for part in request: 
    pass 
    # never enters the loop 

Powodem Robię to dlatego, że jakoś mój atrybut raw_post_data jest pusta podczas korzystania multipart/related informacji MIME na POST dowództwo. Najwyraźniej jest to bug that's been there for a long time.

+2

'request' nie zawiera żadnych treści. Po prostu zawiera szczegóły dotyczące wniosku - stąd nazwa. Treść przychodzi z * odpowiedzią *. –

+0

Co dokładnie robisz? Czy to próbuje analizować przesłaną zawartość pliku? – jathanism

+0

@jatanizm: nie. Otrzymuję POST z zestawu "multipart/related" z Centrum wiadomości MMS i, mimo że dane tam są, DJANGO nie ujawnia go za pomocą obiektu 'request'. Upewniłem się, że dane są tam przez wąchanie pakietów. –

Odpowiedz

2

Czy próbowałeś HttpRequest.raw_post_data? Wygląda na to, że powinieneś rzucić okiem, dopóki bug nie zostanie naprawiony. https://docs.djangoproject.com/en/1.3/ref/request-response/#django.http.HttpRequest.raw_post_data

+0

Nie zdawałem sobie sprawy z tego, co to stary ... Ale może to być dobra informacja dla niektórych osób, więc po prostu zostawię odpowiedź. – xeor

+0

dzięki! Spojrzałem na HttpRequest.raw_post_data. Jest ustawiony na 'nil' w jakiejś części frameworka z powodu jego nagłówka mówiącego, że jest to post" multipart/related "... –

2

Dla django wersji < 1.4, można użyć HttpRequest.raw_post_data, a dla wersji> = 1.4, przy użyciu HttpRequest.bodyinstead.

Powiązane problemy