在这种情况下,Jsoup如何返回可读地址?

时间:2014-07-24 13:30:09

标签: java jsoup reverse-geocoding

我有数千个由纬度经度信息组成的数据。我正在尝试构建一个桌面应用程序,要求将纬度经度转换为人类可读的地址。我认为Jsoup用于这样的任务。

我预计“Belmani,Madhya Pradesh 486669,India”将通过以下代码打印在控制台中(但似乎即使发布也没有完成):

Document doc = Jsoup.connect("http://www.findlatitudeandlongitude.com/find-address-from-latitude-and-longitude")
              .data("lat", "24.2")
              .data("lon", "82")
              .userAgent("Chrome")
              .post();
   System.out.println(doc.getElementById("address")); // should print html source of address returned

我试过这么多。 Jsoup怎么能完成这个任务呢?以上案例的示例代码?

3 个答案:

答案 0 :(得分:1)

尝试通过网址参数发送数据:

Document doc = Jsoup.connect("http://www.findlatitudeandlongitude.com/find-address-from-latitude-and-longitude/?lat=24.2&lon=82").get();
System.out.println(doc.getElementById("address"));

答案 1 :(得分:1)

该网站使用GET参数(url params)代替POST

您可以完全按原样使用您的示例,但将.post()换成.get()

public static void main(String[] args) throws IOException {
    Document doc = Jsoup.connect("http://www.findlatitudeandlongitude.com/find-address-from-latitude-and-longitude")
            .data("lat", "24.2")
            .data("lon", "82")
            .userAgent("Chrome")
            .get();
    System.out.println(doc.getElementById("address"));
}

这可以避免您需要手动构建URL,正如Alexey的回答所暗示的那样。

这给了(你可以完成解析以去除不必要的信息):

<span id="address"><span class="label">Address:</span><span class="value">Belmani, Madhya Pradesh 486669, India</span></span>

答案 2 :(得分:0)

首先使用firefox海报,弄清楚如何传递参数以及使用哪种方法获取或发布,然后相应地更改代码。