Mehr

ArcGIS Android - ArcGISFeatureLayer-Fehler: EsriServiceException: Internal Server Error

ArcGIS Android - ArcGISFeatureLayer-Fehler: EsriServiceException: Internal Server Error


Ich entwickle eine Android-Anwendung mit dem tse ArcGIS SDK für Android. Ich habe ein Problem beim Abfragen eines Feature-Layers: Der von mir verwendete Feature-Layer wird in ArcGIS Online gehostet, und diesen Code verwende ich für die Abfrage:public final String mNonValidatedURL="http://LINK-TO-SERVICE/FeatureServer/0"; QueryParameters qParam = new QueryParameters(); qParam.setReturnGeometry(true); qParam.setOutSpatialReference(wm); qParam.setWhere("Validation='Nicht gültig'"); qParam.setReturnGeometry(true); qParam.setOutFields(neuer String[]{"*"}); Karte obf = neue HashMap(); obf.put("Datum", Bestellung.ASC); qParam.setOrderByFields(obf); QueryTask qTask = new QueryTask(mNonValidatedURL); try { FeatureResult-Ergebnisse = qTask.execute(qParam); Ergebnisse zurückgeben; } catch (Exception e) { Log.e("freaking Exception", e.toString()); e.printStackTrace(); null zurückgeben; }

manchmal wird die Abfrage ohne Probleme ausgeführt, aber meistens erhalte ich diesen Fehler:


Ich habe deinen Code bearbeitet. Hier ist das bearbeitete Codestück.

öffentliche Klasse MainActivity erweitert AppCompatActivity { QueryTask qTask; Taste btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.button); qTask = new QueryTask("http://services3.arcgis.com/hjUMsSJ87zgoicvl/ArcGIS/rest/services/PINV/FeatureServer/0"); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AsyncQueryTask ayncQuery = new AsyncQueryTask(); ayncQuery.execute("test"); } }); } private Klasse AsyncQueryTask erweitert AsyncTask { @Override protected void onPreExecute() { } @Override protected FeatureResult doInBackground(String… params) { QueryParameters qParameters = new QueryParameters(); String whereClause = "Validation='Nicht gültig'"; String outFields[] = {"*"}; qParameters.setReturnGeometry(true); qParameters.setOutFields(outFields); qParameters.setWhere(whereClause); try { FeatureResult-Ergebnisse = qTask.execute(qParameters); Ergebnisse zurückgeben; } catch (Ausnahme e) { e.printStackTrace(); } null zurückgeben; } @Override protected void onPostExecute(FeatureResult-Ergebnisse) { Envelopeausmaß = new Envelope(); if (results!= null) { int size = (int) results.featureCount(); for (Objektelement: Ergebnisse) { if (Elementinstanz von Feature) { Feature-Feature = (Feature)-Element; // Funktion in mGraphicQuery umwandeln if(feature.getGeometry().getType().equals(Geometry.Type.POLYGON)) { SimpleFillSymbol sms = new SimpleFillSymbol(Color.GREEN, SimpleFillSymbol.STYLE.SOLID); SimpleLineSymbol sms2 = new SimpleLineSymbol(Color.GREEN, 1f, SimpleLineSymbol.STYLE.SOLID); sms.setOutline(sms2); sms.setAlpha(100); Grafikgrafik = neue Grafik(feature.getGeometry(), sms, feature.getAttributes()); Polygon p = (Polygon) graphic.getGeometry(); p.queryEnvelope(Ausdehnung); Umfang.Merge(Ausmaß); } else if (feature.getGeometry().getType().equals(Geometry.Type.POINT)){ SimpleMarkerSymbol sms = new SimpleMarkerSymbol(Color.RED,15,SimpleMarkerSymbol.STYLE.CIRCLE); Grafikgrafik = neue Grafik(feature.getGeometry(), sms, feature.getAttributes()); Punkt p = (Punkt) graphic.getGeometry(); p.queryEnvelope(Ausdehnung); Umfang.Merge(Ausmaß); } } } } if(results.featureCount()==0){ Toast.makeText(MainActivity.this, "Kein Ergebnis", Toast.LENGTH_SHORT).show(); } } } }

Schau das Video: Building you first mapping app with the ArcGIS Runtime SDK for Android