2012-05-22 18 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) 

मैं एक सर्वर पर एक्सएमएल भेजने और एक्सएमएल वापस पाने की कोशिश कर रहा हूं। क्या इस अपवाद को ठीक/अनदेखा करने का कोई तरीका है?httplib.BadStatusLine अपवाद को कैसे ठीक करें?

मुझे पता है कि स्थिति रेखा खाली है जो इस त्रुटि को उठा रही है।

+0

डुप्लिकेट: http://stackoverflow.com/q/10707959/ आप सर्वर के लिए एक कच्चे http अनुरोध भेजने के लिए कुछ इस तरह इस्तेमाल कर सकते हैं 1350899 – mata

उत्तर

5

यह देखने का प्रयास करें कि आपका सर्वर वास्तव में क्या लौटाता है! यह शायद एक वैध HTTP प्रतिक्रिया नहीं है।

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() 

प्रतिक्रिया कुछ ऐसा दिखाई देगा:

HTTP/1.1 200 OK 
<response headers> 

<response body>