From 9db1c6b0b0ff1c73659630275961e0b648f4dd46 Mon Sep 17 00:00:00 2001 From: "Bryan A. Jones" Date: Fri, 12 Jul 2019 10:23:53 -0500 Subject: [PATCH] Allow specification of server's encoding in webclient. --- gluon/contrib/webclient.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gluon/contrib/webclient.py b/gluon/contrib/webclient.py index beac2ff9..f2d75969 100644 --- a/gluon/contrib/webclient.py +++ b/gluon/contrib/webclient.py @@ -64,7 +64,7 @@ class WebClient(object): headers=headers, method='GET') def post(self, url, data=None, cookies=None, - headers=None, auth=None, method='auto'): + headers=None, auth=None, method='auto', charset='utf-8'): self.url = self.app + url # if this POST form requires a postback do it @@ -147,7 +147,11 @@ class WebClient(object): else:#python2.5 self.status = None - self.text = to_native(self.response.read()) + self.text = self.response.read() + if charset: + if charset == 'auto': + charset = self.response.headers.getparam('charset') + self.text = to_native(self.text, charset) # In PY3 self.response.headers are case sensitive self.headers = dict() for h in self.response.headers: @@ -173,9 +177,10 @@ class WebClient(object): self.sessions[name] = value # find all forms and formkeys in page - self.forms = {} - for match in FORM_REGEX.finditer(to_native(self.text)): - self.forms[match.group('formname')] = match.group('formkey') + if charset: + self.forms = {} + for match in FORM_REGEX.finditer(self.text): + self.forms[match.group('formname')] = match.group('formkey') # log this request self.history.append((self.method, self.url, self.status, self.time))