- 论坛徽章:
- 2
|
我有一段小程序,用来发送一个post请求:
- def post(url, data):
- req = urllib2.Request(url)
- data = urllib.urlencode(data)
- opener = urllib2.build_opener(urllib2.HTTPHandler())
- response = opener.open(req, data)
- return response.read()
- def main():
- url = "http://localhost:8080"
- data = {'email':'myemail', 'password':'mypass'}
- print post(url, data)
- if __name__ == '__main__':
- main()
复制代码
这个是OK的,可以工作,但是如果把def post改成
- def post(url, data):
- connection = httplib.HTTPConnection(url)
- connection.request('POST', "", data)
- response = connection.getresponse()
- return response.read()
复制代码
就不行了,运行报错
- socket.gaierror: [Errno 8] nodename nor servname provided, or not known
复制代码
服务器端的代码很简单,如下:
- class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
- def do_POST(self):
- print "POST"
- datas = self.rfile.read(int(self.headers['content-length']))
- datas = urllib.unquote(datas).decode("utf-8", 'ignore')#指定编码方式
- print datas
- self.send_response(200)
- self.send_header('Content-type', 'application/json')
- self.end_headers()
- self.wfile.write("received:"+datas)
- if __name__ == '__main__':
- serverAddress = ('', 8080)
- server = BaseHTTPServer.HTTPServer(serverAddress, RequestHandler)
- server.serve_forever()
复制代码
这是怎么回事?我的客户端程序哪里错了?
谢谢
|
|