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)

XMLをサーバーに送信してXMLを取り戻そうとしています。この例外を修正/無視する方法はありますか?

このエラーを引き起こしているステータス行が空であることを私は知っています。

4

1 に答える 1

5

サーバーが実際に返すものを確認してみてください。おそらく有効なHTTP応答ではありません。次のようなものを使用して、生の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>
于 2012-05-23T14:05:34.580 に答える