2010-02-03 23 views
7

Tôi nghĩ rằng một bài gửi tất cả thông tin trong tiêu đề HTTP khi bạn sử dụng bài viết (tôi không được thông báo rõ ràng về chủ đề này), vì vậy tôi nhầm lẫn tại sao bạn phải urlencode() dữ liệu thành định dạng key=value&key2=value2. Làm thế nào để định dạng được rằng đi vào chơi khi sử dụng POST ?:Python: urllib2.urlopen (url, dữ liệu) Tại sao bạn phải urllib.urlencode() dữ liệu?

# Fail 
data = {'name': 'John Smith'} 
urllib2.urlopen(foo_url, data) 

nhưng

# Success 
data = {'name': 'John Smith'} 
data = urllib.urlencode(data) 
urllib2.urlopen(foo_url, data) 

Trả lời

9

Nó liên quan đến tiêu đề "Loại nội dung": khách hàng phải có ý tưởng về cách dữ liệu POST được mã hóa hoặc cách khác làm cách nào để biết cách giải mã?

Cách tiêu chuẩn để thực hiện việc này là thông qua định dạng mã hóa ứng dụng/x-www-form-urlencoded.

Bây giờ, nếu câu hỏi là "tại sao chúng ta cần phải mã hóa?", Câu trả lời là "bởi vì chúng tôi cần để có thể phân định tải trọng trong vùng chứa HTTP".

2

dữ liệu phải nằm trong tiêu chuẩn định dạng application/x-www-form-urlencoded. urlencode chuyển đổi số arg của bạn thành chuỗi được mã hóa url.

Các vấn đề liên quan