Java上最基本的HttpGet请求

时间:2014-10-22 03:22:44

标签: java json http

我需要帮助对返回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语句而大喊大叫。

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

1 个答案:

答案 0 :(得分:0)

这应该有效

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();
    }