2012-05-22 44 views
5
URL = "MY HTTP REQUEST URL" 
XML = "<port>0</port>" 

parameter = urllib.urlencode({'XML': XML}) 
response = urllib.urlopen(URL, parameter) 
print response.read() 


IOError: ('http protocol error', 0, 'got a bad status line', None) 

Tôi đang cố gắng gửi XML đến máy chủ và lấy lại XML. Có cách nào để sửa/bỏ qua ngoại lệ này không?Làm cách nào để khắc phục ngoại lệ httplib.BadStatusLine?

Tôi biết rằng dòng trạng thái trống và đang tăng lỗi này.

+0

trùng lặp: http://stackoverflow.com/q/10707959/ 1350899 – mata

Trả lời

5

Hãy thử xem giao diện máy chủ của bạn thực sự trở lại như thế nào! Nó có lẽ không phải là một phản ứng HTTP hợp lệ. Bạn có thể sử dụng một cái gì đó như thế này để gửi yêu cầu http liệu đến máy chủ:

from socket import socket 

host = 'localhost' 
port = 80 
path = "/your/url" 
xmlmessage = "<port>0</port>" 

s = socket() 
s.connect((host, port)) 
s.send("POST %s HTTP/1.1\r\n" % path) 
s.send("Host: %s\r\n" % host) 
s.send("Content-Type: text/xml\r\n") 
s.send("Content-Length: %d\r\n\r\n" % len(xmlmessage)) 
s.send(xmlmessage) 
for line in s.makefile(): 
    print line, 
s.close() 

Câu trả lời sẽ giống như:

HTTP/1.1 200 OK 
<response headers> 

<response body> 
Các vấn đề liên quan