【问题标题】:How to connect to MovieDB API webservice?如何连接到 MovieDB API 网络服务?
【发布时间】:2013-07-11 08:49:08
【问题描述】:

我是 webservice 的新手,我正处于学习阶段。没有多少在线内容提供有关使用 MovieDB API 网络服务的信息。好吧,我只是专注于尝试在屏幕上获取电影信息。

因此,根据API,我正在请求信息,当我将http://api.themoviedb.org/3/movie/550?api_key=MYKEY 粘贴到浏览器中时,我得到了 JSON 响应。

我想编写一个使用 JAVA、SOAP 来解析 JSON 并获取所需信息的 Web 服务。我尝试使用 HttpURLConnection,然后使用 BufferedReader,但它不起作用。

请给我一些更好的选择。任何链接/博客都会有所帮助。

这是代码 sn-p。

public class TestJSON {

/**
 * @param args
 */
public static void main(String[] args) {
    try{
        URL url = new URL("http://api.themoviedb.org/3/movie/550?api_key=MYKEY/3/movie/550");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setDoOutput(true);
        con.setRequestMethod("GET");
        con.setRequestProperty("Content-Type", "application/json");

        String input = "";

        OutputStream os = con.getOutputStream();
        os.write(input.getBytes());
        os.flush();

        if (con.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
            throw new RuntimeException("Failed : HTTP error code : "
                + con.getResponseCode());
        }

        BufferedReader br = new BufferedReader(new InputStreamReader((con.getInputStream())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        con.disconnect();


    }
    catch(MalformedURLException m){
        System.out.println("Malformed URL");
    }
    catch(IOException ioe){
        System.out.println("IO exception");
    }


}

}

提前致谢。

辛哥

【问题讨论】:

  • 从不羞于分享您尝试过的代码。
  • @JunedAhsan 谢谢我现在有我的代码了。
  • 您能提及您遇到的错误/异常吗?
  • @JunedAhsan 我收到 IO 异常...所以我尝试调试我的代码,发现 HttpURLConnection 的对象 con 的响应为 NULL。当我尝试链接表单浏览器时,我得到了一些 JSON 响应。所以连接有问题。

标签: java json web-services jakarta-ee getjson


【解决方案1】:

尝试使用此代码从 url 读取输出:

BufferedReader in = new BufferedReader(
                          new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuffer html = new StringBuffer();

while ((inputLine = in.readLine()) != null) {
    html.append(inputLine);
}
in.close();

【讨论】:

  • 我收到 java.lang.RuntimeException: Failed : HTTP error code : 401
  • @Zingo 你得到那个是因为你的令牌/密钥无效。
  • 出于安全原因,我无法提供密钥。密钥有效,当我在 url 中插入实际密钥并将其粘贴到浏览器中时,它可以正常工作。所以我认为关键不是问题。我访问服务的方式似乎有问题。
  • @Zingo 我不确定这项服务。但是 401 表示未经授权,因此您可能缺少将某些凭据作为必需标头的一部分发送。如果您有该服务的文档,请尝试查找该信息。
  • @JunedAhsan 即使密钥无效,也不会通过异常。而是应该给
猜你喜欢
  • 2013-06-23
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多