Jsoup在Google Maps API上返回错误400

时间:2013-01-29 07:12:07

标签: java api http google-maps jsoup

我正在开展一个项目,要求我在Google地图上找到某些商店的坐标。我已经有了每个商店的地址。

我使用Google Geocoding APIs玩了一点,我认为它们是我需要的:我的所有代码需要做的就是连接到DBMS,检索item_id和地址,为地理编码API生成有效的URL和处理它将获得的JSON数据。

我不明白为什么,但我生成的网址在我的浏览器中运行(Chrome 23和最新的Safari,OS X),但在Jsoup中不起作用。我查看了Chrome中页面的来源,看起来它是完全有效的HTML。那么什么是Jsoup做错了?

代码段(runnable,会给你同样的例外):

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class RandomClass {
     public static void main(String args[]) {
     Document doc = null;
     try {
        String url = "http://maps.googleapis.com/maps/api/geocode/json?address=0+164+W+75th+St,+New%20York,+NY+10024&sensor=false";

        String ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17";
        doc = Jsoup.connect(url).timeout(60 * 1000).userAgent(ua).get();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

抛出

org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml. Mimetype=application/json; charset=UTF-8, URL=http://maps.googleapis.com/maps/api/geocode/json?address=164+W+75th+St,+New%20York,+NY+10024&sensor=false
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:436)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:393)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:159)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:148)
at asdru.RandomClass.main(RandomClass.java:16)

1 个答案:

答案 0 :(得分:7)

试试这个

Jsoup.connect(url).ignoreContentType(true).execute().body();

OR

Jsoup.connect(url).ignoreContentType(true).timeout(60 * 1000).userAgent(ua).get();