【问题标题】:How do I get the JSON response from /places/v1/autosuggest in Java?如何从 Java 中的 /places/v1/autosuggest 获取 JSON 响应?
【发布时间】:2018-12-15 14:45:10
【问题描述】:

我在使用 Here API 时遇到了一些问题。当我运行 curl 命令时,我得到一个 JSON 对象,但是当我在我的代码中尝试它时,我不断地返回 HTML。谁能帮帮我吗?我究竟做错了什么? 这是 curl 命令:

 curl \
  --compressed \
  -H 'Accept-Encoding:gzip' \
  -H 'Accept-Language:en-US,en;q=0.5' \
  --get 'https://places.cit.api.here.com/places/v1/autosuggest' \
    --data-urlencode 'app_code=my_code' \
    --data-urlencode 'app_id=my_id' \
    --data-urlencode 'at=48.13642,11.57755' \
    --data-urlencode 'pretty=true' \
    --data-urlencode 'q=Hofbräuhaus am Platz' 

这是我的 Java 代码:

private void searchForPlacesInMunich(String place) throws IOException {
        String link = "https://places.cit.api.here.com/places/v1/autosuggest"
                + "?app_id=" + app_id
                + "&app_code=" + app_code
                + "&at=" + latitude + "%2C" + longitude
                + "&q=" + place
                + "&pretty";
        URL url = new URL(link);
          HttpURLConnection con = (HttpURLConnection) url.openConnection();
          con.setRequestProperty("Accept-Encoding", "gzip");
          con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
          con.setRequestMethod("GET");
          con.connect();
          System.out.println("Length : " + con.getContentLength());

          Reader reader = null;
          if ("gzip".equals(con.getContentEncoding())) {
             reader = new InputStreamReader(new GZIPInputStream(con.getInputStream()));
          }
          else {
             reader = new InputStreamReader(con.getInputStream());
          }

          while (true) {
             int ch = reader.read();
             if (ch==-1) {
                break;
             }
             System.out.print((char)ch);
          }
    }

【问题讨论】:

  • 更多信息,因为我觉得我没有很好地解释问题:问题是:当我通过互联网浏览器发送 GET 请求时,它工作正常(因为它获取 HTML作为响应),但是在页面左下角的“将此请求带回家”下有一个 curl 命令(curl 命令在问题中)。当我在终端中运行命令时,我得到原始 JSON 响应(没有 HTML),但是当我运行我的 Java 代码(也在问题中)时,我只得到 HTML 响应,而不是预期的 JSON .

标签: java curl here-api


【解决方案1】:

刚刚找到了一种获取 JSON 而不是 UI 的方法:答案很简单。只需在 URL 中添加回调 灵感来自HERE places REST apis returns web ui instead on json

【讨论】:

    【解决方案2】:

    试试 JSONObject

    JSONObject myObject = new JSONObject(result);
    

    来源:Get a JSON object from a HTTP response

    【讨论】:

    • 我不确定它是否会起作用,因为我收到了 HTML 响应(HTML 标记和所有内容)。我可能问错了问题。它更多的是关于 Here API,然后是关于 Java。我的意思是,当我在浏览器中访问 URL 时,我得到一个普通站点,在左下角有一个 curl 命令,可以复制并以 JSON 格式(原始,没有任何 HTML)获取响应,这就是我我试图进入我的 Java 代码
    猜你喜欢
    • 1970-01-01
    • 2014-10-09
    • 2017-06-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2020-03-30
    • 2019-05-14
    • 2022-06-28
    相关资源
    最近更新 更多