2012-08-10 106 views
2

我现在试图通过在Java线中使用HTTP请求来获取JSON对象。如何从Java中的HTTP请求获取JSON对象

我想知道如何在下面的电话线中获得响应或JSON对象。

请让我知道。

(在这个程序中,我试图让文章“纽约”的维基百科类。)

String requestURL = "http://en.wikipedia.org/w/api.php?action=query&prop=categories&format=json&clshow=!hidden&cllimit=10&titles=" + words[i]; 
URL wikiRequest = new URL(requestURL); 
URLConnection connection = wikiRequest.openConnection(); 
connection.setDoOutput(true); 

        /**** I'd like to get response here. ****/ 

JSONObject json = Util.parseJson(response); 
+0

线不这样做。如果请求相对较大,您将得到OOM,并且这将很难修复。 – Edison 2013-05-19 22:46:27

回答

3
Scanner scanner = new Scanner(wikiRequest.openStream()); 
String response = scanner.useDelimiter("\\Z").next(); 
JSONObject json = Util.parseJson(response); 
scanner.close(); 
+0

什么库包含您正在使用的Util类?这个答案可能会迫使开发人员加入他们可能不想要的新依赖项。 – 2018-01-04 18:18:29

0

样品实施与玉米的HttpClient &玉米转换器

HttpClient client = new HttpClient(new URI(http://en.wikipedia.org/w/api.php?action=query&prop=categories&format=json&clshow=!hidden&cllimit=10&titles=" + words[i])); 
HttpResponse response = client.sendData(HTTP_METHOD.GET); 
if (! response.hasError()) { 
String jsonString = response.getData(); 
JsTypeComplex jsonResponse = (JsTypeComplex) JsonStringParser.parseJsonString(jsonString); 
JsTypeList resultsArr = (JsTypeList) jsonResponse.get("results"); 

Maven依赖:

<dependency> 
    <groupId>net.sf.corn</groupId> 
    <artifactId>corn-httpclient</artifactId> 
    <version>1.0.0</version> 
</dependency> 
<dependency> 
    <groupId>net.sf.corn</groupId> 
    <artifactId>corn-converter</artifactId> 
    <version>1.0.0</version> 
</dependency> 
2

仅有2的代码JSONTokener

JSONTokener tokener = new JSONTokener(wikiRequest.openStream()); 
JSONObject root = new JSONObject(tokener); 
+0

URL.openStream()返回一个InputStream ... JSONTokener需要一个字符串? – dasjanik 2017-04-02 09:18:32