minerjoe

FeatureLayer.query() returns RuntimeError: Token Required (Error Code: 499)

Discussion created by minerjoe on Oct 18, 2018
Latest reply on Feb 28, 2019 by simo

I am trying to query a FeatureLayer.  I can connect to the GIS (using IWA), I validate the connection by checking the User, so I know the GIS object is valid.

 

Create a FeatureLayer object using a valid Url (the FeatureLayer object is created).  But when I run query I get RuntimeError: Token Required (Error Code: 499).  See full stack trace below.  Pretty simple code

 

gis = GIS(portal, '', '')  # IWA

# get the webmap to use offline
offline_map_item = gis.content.get(webmap)
offline_webmap = WebMap(offline_map_item)

featureLayer = FeatureLayer(projects_url, gis)
features = featureLayer.query()

 

The issue is I see no way you would pass a token to this method.  I passed the GIS object when initializing the FeatureLayer and the server is federated so I would think this passes the required tokens.  Can some please help explain how I should be passing a token to this method from an IWA configured portal to a federated server in this call.

 

Thanks

-Joe

 

 

Stack trace:

 

RuntimeError                              Traceback (most recent call last)
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py in _hydrate(self)
   7577
-> 7578                 self._refresh()
   7579

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py in _refresh(self)
   7544         else:
-> 7545             dictdata = self._con.post(self.url, params, token=self._lazy_token)
   7546

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\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)
   1155
-> 1156                 self._handle_json_error(resp_json['error'], errorcode)
   1157                 return None

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\_impl\connection.py in _handle_json_error(self, error, errorcode)
   1176         errormessage = errormessage + "\n(Error Code: " + str(errorcode) +")"
-> 1177         raise RuntimeError(errormessage)
   1178

RuntimeError: Token Required
(Error Code: 499)

During handling of the above exception, another exception occurred:

RuntimeError                              Traceback (most recent call last)
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py in _hydrate(self)
   7586                     self._lazy_token = None
-> 7587                     self._refresh()
   7588

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py in _refresh(self)
   7544         else:
-> 7545             dictdata = self._con.post(self.url, params, token=self._lazy_token)
   7546

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\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)
   1155
-> 1156                 self._handle_json_error(resp_json['error'], errorcode)
   1157                 return None

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\_impl\connection.py in _handle_json_error(self, error, errorcode)
   1176         errormessage = errormessage + "\n(Error Code: " + str(errorcode) +")"
-> 1177         raise RuntimeError(errormessage)
   1178

RuntimeError: Token Required
(Error Code: 499)

During handling of the above exception, another exception occurred:

RuntimeError                              Traceback (most recent call last)
<ipython-input-12-554803401d1a> in <module>
      2
      3 featureLayer = FeatureLayer(projects_url, gis)
----> 4 features = featureLayer.query()

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\features\layer.py in query(self, where, out_fields, time_filter, geometry_filter, return_geometry, return_count_only, return_ids_only, return_distinct_values, return_extent_only, group_by_fields_for_statistics, statistic_filter, result_offset, result_record_count, object_ids, distance, units, max_allowable_offset, out_sr, geometry_precision, gdb_version, order_by_fields, out_statistics, return_z, return_m, multipatch_option, quantization_parameters, return_centroid, return_all_records, result_type, historic_moment, sql_format, return_true_curves, return_exceeded_limit_features, **kwargs)
    567
    568         params['returnCountOnly'] = True
--> 569         record_count = self._query(url, params)
    570         if 'maxRecordCount' in self.properties:
    571             max_records = self.properties['maxRecordCount']

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\features\layer.py in _query(self, url, params)
   1194         """ returns results of query """
   1195         result = self._con.post(path=url,
-> 1196                                 postdata=params, token=self._token)
   1197         if 'error' in result:
   1198             raise ValueError(result)

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py in _token(self)
   7606             return self._lazy_token
   7607         else:
-> 7608             self._hydrate()
   7609             return self._lazy_token
   7610

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py in _hydrate(self)
   7594                         # try token in the provided gis
   7595                         self._lazy_token = self._con.token
-> 7596                         self._refresh()
   7597
   7598         if err is not None:

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py in _refresh(self)
   7543             dictdata = self._con.get(self.url, params, token=self._lazy_token)
   7544         else:
-> 7545             dictdata = self._con.post(self.url, params, token=self._lazy_token)
   7546
   7547         self._lazy_properties = PropertyMap(dictdata)

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\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)
   1154                                          verify_cert=verify_cert, is_retry=True)
   1155
-> 1156                 self._handle_json_error(resp_json['error'], errorcode)
   1157                 return None
   1158

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\_impl\connection.py in _handle_json_error(self, error, errorcode)
   1175
   1176         errormessage = errormessage + "\n(Error Code: " + str(errorcode) +")"
-> 1177         raise RuntimeError(errormessage)
   1178
   1179 class _StrictURLopener(request.FancyURLopener):

RuntimeError: Token Required
(Error Code: 499)

Outcomes