Handle HTTP and SSL errors
The SSL errors occur on computers that are using old openssl version which fail the handshake. issue5601 review18191002
This commit is contained in:
1 parent
8b7bfa4382
commit
75f13dc1e3
1 file changed
+20
-2
@@ -4,6 +4,7 @@
|
||||
import re
|
||||
import base64
|
||||
import requests
|
||||
import ssl
|
||||
|
||||
from trytond.config import config
|
||||
from trytond.model import fields
|
||||
@@ -153,8 +154,25 @@ class CreateShippingUPS(Wizard):
|
||||
shipment_request = self.get_request(shipment, packages, credential)
|
||||
api_url = config.get('stock_package_shipping_ups', credential.server,
|
||||
default=SERVER_URLS[credential.server])
|
||||
req = requests.post(api_url, json=shipment_request)
|
||||
response = req.json()
|
||||
nb_tries, response = 0, None
|
||||
error_message = ''
|
||||
try:
|
||||
while nb_tries < 5 and response is None:
|
||||
try:
|
||||
req = requests.post(api_url, json=shipment_request)
|
||||
except ssl.SSLError as e:
|
||||
error_message = e.message
|
||||
nb_tries += 1
|
||||
continue
|
||||
req.raise_for_status()
|
||||
response = req.json()
|
||||
except requests.HTTPError as e:
|
||||
error_message = e.message
|
||||
|
||||
if error_message:
|
||||
self.raise_user_error('ups_webservice_error', {
|
||||
'message': error_message,
|
||||
})
|
||||
|
||||
if 'Fault' in response:
|
||||
error = response['Fault']['detail']['Errors']
|
||||
|
||||
Reference in new issue
Block a user