2011-10-28 28 views
5

Tôi muốn đọc yêu cầu HTTP thô ở Django 1.3.Đọc yêu cầu HTTP thô ở Django 1.3

Có cách nào dễ dàng để làm điều đó không?

Tôi đã thử các sau đây mà không thành công:

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

Cũng thử:

for part in request: 
    pass 
    # never enters the loop 

Lý do tôi đang làm điều này là bởi vì bằng cách nào đó thuộc tính raw_post_data của tôi là trống khi sử dụng multipart/related thông tin MIME trên POST chỉ huy. Rõ ràng là bug that's been there for a long time.

+2

'yêu cầu 'không có bất kỳ nội dung nào. Nó chỉ có các chi tiết về yêu cầu được đưa ra - do đó tên. Nội dung đi kèm với * phản hồi *. –

+0

Chính xác thì bạn đang làm gì? Điều này có đang cố phân tích nội dung tệp đã tải lên không? – jathanism

+0

@jathanism: no. Tôi nhận được một bài đăng 'multipart/related' từ một Trung tâm Tin nhắn MMS và, mặc dù dữ liệu ở đó, DJANGO không phơi bày nó thông qua đối tượng' request'. Tôi đảm bảo rằng dữ liệu ở đó bằng cách đánh hơi các gói dữ liệu. –

Trả lời

2

Bạn đã thử HttpRequest.raw_post_data chưa? Có vẻ như một cái gì đó bạn nên xem xét cho đến khi lỗi được sửa. https://docs.djangoproject.com/en/1.3/ref/request-response/#django.http.HttpRequest.raw_post_data

+0

Đã không nhận ra câu hỏi gì _that_ cũ ... Nhưng nó có thể là thông tin tốt cho một số người, vì vậy tôi sẽ chỉ để lại câu trả lời. – xeor

+0

cảm ơn! Tôi đã nhìn vào HttpRequest.raw_post_data. Nó được đặt thành 'nil' ở một số phần của khung công tác vì tiêu đề của nó cho biết đó là bài đăng' nhiều phần/liên quan' ... –

2

Đối với phiên bản django < 1.4, bạn có thể sử dụng HttpRequest.raw_post_data, và cho phiên bản> = 1.4, sử dụng HttpRequest.bodyinstead.