How to get JSON object from HTTP request in Java

2019-02-07 10:04发布

I'm now trying to get JSON Object with using HTTP request in Java cord.

I want to know how I can get response or JSON object in the following cord.

Please let me know.

(In this program, I try to get Wikipedia categories of the article "New York". )

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

4条回答
Evening l夕情丶
2楼-- · 2019-02-07 10:28

Just 2 lines of code with JSONTokener

JSONTokener tokener = new JSONTokener(wikiRequest.openStream());
JSONObject root = new JSONObject(tokener);
查看更多
趁早两清
3楼-- · 2019-02-07 10:30

If you are using URLConnection you should be able to read the stream instead of getting a response object:

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

see: http://docs.oracle.com/javase/tutorial/networking/urls/readingWriting.html

查看更多
聊天终结者
4楼-- · 2019-02-07 10:33

Sample implementation with corn-httpclient & corn-converter

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 dependencies:

<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>
查看更多
聊天终结者
5楼-- · 2019-02-07 10:37
Scanner scanner = new Scanner(wikiRequest.openStream());
String response = scanner.useDelimiter("\\Z").next();
JSONObject json = Util.parseJson(response);
scanner.close();
查看更多
登录 后发表回答