2014-10-22 39 views
1

我需要幫助對返回JSON對象的網站執行RESTful調用。我堅持使用可用的選項,但我更願意使用開箱即用的產品,而不是安裝任何第三方插件。Java上最基本的HttpGet請求

這裏是我目前有至今:

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有十幾個實現能夠正常工作,我只是尋找最基本的方法可能,我沒有像上傳圖片到服務器那樣瘋狂。

所以上面我的代碼的問題是,我得到一個錯誤ClientProtocolExceptionhttpClient.execute()需要一個try catch語句,這是一件全新的我,我從來沒有過一個編譯器衝我嚷嚷不插入嘗試catch語句。

我該如何解決這個問題,以調用一個將非常基本的JSON對象轉換爲字符串的url?

+0

開始由具有看看[捕捉和處理異常(http://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html),並有是一些可用於Java的JSON庫,我相信[Google](https://code.google.com/p/google-gson/)庫相對流行... – MadProgrammer 2014-10-22 03:26:24

+0

使用簡單的JSON解析器https:/ /code.google.com/p/json-simple/ – 2014-10-22 03:27:47

+0

請解釋一個非常基本的JSON對象**不是** String嗎? – 2014-10-22 03:30:39

回答

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