【问题标题】:The most basic HttpGet request on JavaJava上最基本的HttpGet请求
【发布时间】:2014-10-22 03:22:43
【问题描述】:

我需要帮助对返回 JSON 对象的网站执行 RESTful 调用。我坚持使用可用的选项,但我更愿意使用开箱即用的东西,而不是安装任何第三方插件。

这是我目前所拥有的:

import java.io.*;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGetRequest = new HttpGet("http://search.twitter.com/search.json?q=%40apple");

HttpResponse httpResponse = httpClient.execute(httpGetRequest);

我知道此示例中使用的 URL 返回以下内容:

{"errors":[{"message":"The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.","code":64}]}

这对我来说很好,我只想至少将 JSON 响应转换为字符串,以便我可以从这里继续。我对 REST 的工作原理非常熟悉,并且很容易让它在 Objective-C 和 Python 上工作,但由于某种原因,Java 有十几个实现让它正常工作,我只是在寻找最基本的方法可能,我没有做任何疯狂的事情,比如将图像上传到服务器。

所以我上面的代码的问题是我收到了一个ClientProtocolException 错误并且httpClient.execute() 需要一个try catch 语句,这对我来说是全新的,我从来没有让编译器对我大喊大叫因为没有插入 try catch 语句。

如何解决这个问题以调用将非常基本的 JSON 对象转换为字符串的 url?

【问题讨论】:

  • 首先看一下Catching and Handling Exceptions,有许多可用于Java 的JSON 库,我相信Google 库相对流行...
  • 使用简单的 JSON 解析器 code.google.com/p/json-simple
  • 请解释一个非常基本的 JSON 对象如何不是 String
  • 嗯......好吧,来自 twitter 的基本 JSON 需要先发送到客户端,然后才能真正成为字符串。
  • 为什么你不想使用图书馆?这只是为了个人教育,还是这段代码是为了解决一些问题?

标签: java json http


【解决方案1】:

这段代码应该可以工作:

try {
        HttpResponse response;
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet getConnection = new HttpGet(url);
        try {
            response = httpClient.execute(getConnection);
            String JSONString = EntityUtils.toString(response.getEntity(),
                    "UTF-8");
            JSONObject jsonObject = new JSONObject(JSONString); //Assuming it's a JSON Object

        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

【讨论】:

    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多