I am able to connect to ArcGIS online, but when we try to connect directly to our portal we receive the following error information. I am new to administering portal and not sure what i could be missing.
from arcgis.gis import GIS
gis = GIS("https://portal.organizationname.gov/mapsrus/", "username", "password")
HTTPError Traceback (most recent call last)
<ipython-input-14-297762dcb9de> in <module>()
1 from arcgis.gis import GIS
----> 2 gis = GIS("https://portal.organizationname.gov/mapsrus/", "username")
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\site-packages\arcgis\gis\__init__.py in __init__(self, url, username, password, key_file, cert_file, verify_cert, set_active, client_id, profile)
144 self._datastores_list = None
145 self._portal = portalpy.Portal(self._url, self._username, self._password, self._key_file, self._cert_file,
--> 146 verify_cert=self._verify_cert, client_id=self._client_id)
147 if url.lower().find("www.arcgis.com") > -1 and \
148 self._portal.is_logged_in:
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\site-packages\arcgis\_impl\portalpy.py in __init__(self, url, username, password, key_file, cert_file, expiration, referer, proxy_host, proxy_port, connection, workdir, tokenurl, verify_cert, client_id)
161 proxy_port=proxy_port,
162 verify_cert=verify_cert,
--> 163 client_id=client_id)
164 #self.get_version(True)
165 self.get_properties(True)
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\site-packages\arcgis\_impl\connection.py in __init__(self, baseurl, tokenurl, username, password, key_file, cert_file, expiration, all_ssl, referer, proxy_host, proxy_port, connection, verify_cert, client_id)
279
280 if cert_file is None and key_file is None:
--> 281 self.login(username, password, expiration, client_id)
282
283 #----------------------------------------------------------------------
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\site-packages\arcgis\_impl\connection.py in login(self, username, password, expiration, client_id)
505 self._token = newtoken
506
--> 507 resp = self.post('', { 'f': 'json' }, add_token=False) # probe portal to find auth scheme
508 # if basic, digest, NTLM or Kerberos, etc is being used
509 # except handler will catch it and set self._auth appropriately
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\site-packages\arcgis\_impl\connection.py in post(self, path, postdata, files, ssl, compress, is_retry, use_ordered_dict, add_token, verify_cert, token, try_json, out_folder, file_name, force_bytes, add_headers)
1036 opener.addheaders = headers
1037 #print("***"+url)
-> 1038 resp = opener.open(url, data=encoded_postdata.encode())
1039 resp_data, is_file = self._process_response(resp,
1040 out_folder=out_folder,
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\urllib\request.py in open(self, fullurl, data, timeout)
530 for processor in self.process_response.get(protocol, []):
531 meth = getattr(processor, meth_name)
--> 532 response = meth(req, response)
533
534 return response
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\urllib\request.py in http_response(self, request, response)
640 if not (200 <= code < 300):
641 response = self.parent.error(
--> 642 'http', request, response, code, msg, hdrs)
643
644 return response
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\urllib\request.py in error(self, proto, *args)
568 if http_err:
569 args = (dict, 'default', 'http_error_default') + orig_args
--> 570 return self._call_chain(*args)
571
572 # XXX probably also want an abstract factory that knows when it makes
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args)
502 for handler in handlers:
503 func = getattr(handler, meth_name)
--> 504 result = func(*args)
505 if result is not None:
506 return result
C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\urllib\request.py in http_error_default(self, req, fp, code, msg, hdrs)
648 class HTTPDefaultErrorHandler(BaseHandler):
649 def http_error_default(self, req, fp, code, msg, hdrs):
--> 650 raise HTTPError(req.full_url, code, msg, hdrs, fp)
651
652 class HTTPRedirectHandler(BaseHandler):
HTTPError: HTTP Error 500: Internal Server Error
Hello Christopher Clary,
I had the same issue before when connecting to my local portal and the issue was that my portal dosn't have a trusted ceritifcate installed , and to be able to connect through the API I just made set the verify certificate paramter to false and I was able to connect.
So you either need to install a certificate from trusted authority or you can escap certficate validation while connect to your portal by modify your code as the following:
gis = GIS("https://portal.organizationname.gov/mapsrus/", "username", "password",verify_cert=False)