Hello, I'm trying to geocode some addresses querying Nominatim. If I enter one address like https://nominatim.openstreetmap.org/search.php?q=31+muntaner%2C+Barcelona%2C+Spain&polygon_geojson=1&viewbox=&format=xml, any web browser runs OK and I get the results. But when trying to do the same from a Java class:
I always get a Has anyone tried to do something similar with success? The timeout exception could be due to the absence on UsertAgent headers into the request? If so, what UserAgents are valid? If somebody could post some code to query Nominatim from Java, I will greatly appreciate. Thanks in advance, Joan. asked 08 Jan '19, 21:22 Joan Segura scai ♦ |
The Java library likely uses a default user agent string. Set it to something unique. See second requirement on https://operations.osmfoundation.org/policies/nominatim/ answered 08 Jan '19, 22:03 mtmail Thanks for your answer mtmail. I'm not using the osmapi from westnordost because when I've copied it into my project appeared a lot of dependencies I hadn't been able to solve. I was trying to open the URL directly. Best regards. Joan.
(08 Jan '19, 22:20)
Joan Segura
|
URL openStream does exactly what the name says, it returns an InputStream (over the underlying TCP connection) to the server in question. It doesn't do any of the bits and pieces of the HTTP protocol (which why you are simply seeing timeouts) and except if you want to do that yourself you are using the the wrong classes and methods. Have a look at https://docs.oracle.com/javase/8/docs/api/java/net/HttpURLConnection.html PS: ~~nowdays you would normally use the OkHttp library but as long as performance is not a concern there is no problem with being old fashioned.~~ OkHttp can no longer be recommended answered 09 Jan '19, 15:55 SimonPoole ♦ |