do as server keine Response
Hallo zusammen,
ich habe ein Problem mit dem Ausführen des folgenden Skripts:
do as server
let myUrl := "https://nominatim.openstreetmap.org/search?street=" + 'Straße' + "&postalcode=" +
PLZ.PLZ +
"&format=json&limit=1";
let response := http("GET", myUrl, {});
if response.result then
for i in response.result do
MapLat := i.lat;
MapLng := i.lon
end
end
end
Der Server wird mit einem POST-Request und dem Status 200 abgerufen, und folgendes wird gesendet:
deferredfalse
exp'(let myUrl := (((("https://nominatim.openstreetmap.org/search?street="+F)+"&postalcode=")+H3.A)+"&format=json&limit=1"); (let response := http("GET",myUrl,{}); (if response.result then (for i in response.result do ((X := i.lat);(U := i.lon)) end) end)))'
nid"G31"
Die Antwort ist jedoch leer, also erhalte ich keine Daten. Es funktioniert wunderbar, wenn ich es ohne den Server ausführe, und auch auf dem Server selbst funktioniert es.
Woran könnte das liegen? Was mache ich falsch?
2 Antworten
-
Ich habe das Skript wie folgt umstrukturiert, und der Request geht jetzt durch:
let response := do as server http("GET", "https://nominatim.openstreetmap.org/search?street=" + 'Straße' + "&postalcode=" + PLZ.PLZ + "&format=json&limit=1", { 'User-Agent': "AppNameTest" }) end;
Aber jetzt wird der User-Agent header nicht erkannt, und ich erhalte von Nominatim die Antwort, dass ich blockiert bin, weil es in deren Policy steht, dass man User-Agent oder Referer im Header haben muss.
-
Hallo fersek,
ich habe deinen Post gesehen, in dem du Probleme mit deinem Ninox-Script hattest, welches eine Anfrage an die Nominatim-API sendet. Basierend auf den von dir geschilderten Problemen möchte ich dir eine überarbeitete Version des Scripts vorschlagen, die beide deiner Hauptprobleme adressieren sollte:
- Das erste Problem, bei dem keine Antwort von der Server-Anfrage zurückkommt.
- Das zweite Problem, bei dem der
User-Agent
-Header nicht erkannt wird, was dazu führt, dass deine Anfrage von Nominatim blockiert wird.
Überarbeiteter Code
do as server let myUrl := "https://nominatim.openstreetmap.org/search?street=" + [Straße] + "&postalcode=" + [PLZ] + "&format=json&limit=1"; let headers := { 'User-Agent': 'AppNameTest', // Ersetze 'AppNameTest' durch den tatsächlichen Namen deiner App. 'Accept': 'application/json' }; let response := http("GET", myUrl, headers); if response.result then for i in response.result do [MapLat] := i.lat; [MapLng] := i.lon; end; end end;
Wichtige Anpassungen:
- User-Agent-Header: Dieser Code beinhaltet den `User-Agent`-Header in den HTTP-Request. Es ist wichtig, dass du 'AppNameTest' durch den Namen deiner Anwendung oder einen anderen geeigneten Wert ersetzt. Dies ist eine Anforderung von Nominatim, um Missbrauch zu verhindern und die Herkunft der Anfragen zu kennen.
- Feldnamen: Bitte stelle sicher, dass `[Straße]` und `[PLZ]` korrekt auf die Felder in deiner Ninox-Datenbank verweisen. Diese sollten durch die tatsächlichen Namen der Felder in deiner Datenbank ersetzt werden, die die Straße und die Postleitzahl enthalten.
- Zuweisung der Koordinaten: Der Code weist die Breiten- und Längengradwerte von der Antwort der API den Feldern `[MapLat]` und `[MapLng]` zu. Auch hier solltest du sicherstellen, dass diese Feldnamen den tatsächlichen Zielfeldern in deiner Datenbank entsprechen.
Bitte probiere diesen angepassten Code aus und prüfe, ob er das Problem mit der Nominatim-API löst. Solltest du weiterhin Schwierigkeiten haben oder eine Fehlermeldung erhalten, überprüfe die URL-Zusammensetzung und stelle sicher, dass alle erforderlichen Daten korrekt in die URL eingesetzt werden.
Ich hoffe, diese Anleitung hilft dir bei der Lösung deines Problems. LG.
Content aside
- Status Answered
-
1
„Gefällt mir“ Klicks
- vor 9 MonatenZuletzt aktiv
- 2Antworten
- 60Ansichten
-
3
Folge bereits