java 发送http请求获得json 以及解析json

https://blog.csdn.net/Applying/article/details/80900173

 

 

博主在做一款图书app的后台,最近遇到的一个需求: 
前端向后端返回图书的isbn码,后端向前端返回该isbn对应图书的信息,例如书名、作者、出版社、简介等。 
后端实现的逻辑:

读取isbn码,判断是否为空,为空则报错
查看数据库是否有与该isbn匹配的图书信息,如果有则直接返回
如果没有,则利用豆瓣开发者工具,进行查找,通过对接收到的信息进行解析,并插入到数据库中
前两步都没有问题,问题就在于第三步,我们需要完成:

在java代码中,发送http的请求,以获取图书的信息
豆瓣开发者工具返回的是JSON格式的文件,因此,我们需要将JSON格式的文件进行解析
这两个问题也是比较常见的问题,我这里将分两个部分分别介绍:

1.发送http请求
public static void temp(String isbn) throws IOException{
    // 我们需要进行请求的地址:
    String temp = "https://api.douban.com/v2/book/isbn/" + isbn;
    try {
        // 1.URL类封装了大量复杂的实现细节,这里将一个字符串构造成一个URL对象
        URL url = new URL(temp);
        // 2.获取HttpURRLConnection对象
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        // 3.调用connect方法连接远程资源
        connection.connect();
        // 4.访问资源数据,使用getInputStream方法获取一个输入流用以读取信息
        BufferedReader bReader = new BufferedReader(
                    new InputStreamReader(connection.getInputStream(), "UTF-8"));

        // 对数据进行访问
        String line = null;
        StringBuilder stringBuilder = new StringBuilder();
        while ((line = bReader.readLine()) != null) {
            stringBuilder.append(line);
        }

        // 关闭流
        bReader.close();
        // 关闭链接
        connection.disconnect();
        // 打印获取的结果
        System.out.println(stringBuilder.toString());

        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
执行结果,我们获得Json包

2.解析JSON包
网上有不少文章在解释如何利用现成的jar包进行解析JSON文件的时候,很多都没有注明用了什么包,都是直接贴代码,看得一头雾水。 
https://blog.csdn.net/m0_37568521/article/details/78795029 
上面的连接是昨天看到的,一个博主贴出了使用了什么包 
 
我将这6个包导入后,顺利实现了简单的转换:

public static void temp(String isbn) throws IOException{
    // 我们需要进行请求的地址:
    String temp = "https://api.douban.com/v2/book/isbn/" + isbn;
    try {
        // 1.URL类封装了大量复杂的实现细节,这里将一个字符串构造成一个URL对象
        URL url = new URL(temp);
        // 2.获取HttpURRLConnection对象
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        // 3.调用connect方法连接远程资源
        connection.connect();
        // 4.访问资源数据,使用getInputStream方法获取一个输入流用以读取信息
        BufferedReader bReader = new BufferedReader(
                    new InputStreamReader(connection.getInputStream(), "UTF-8"));

        // 对数据进行访问
        String line = null;
        StringBuilder stringBuilder = new StringBuilder();
        while ((line = bReader.readLine()) != null) {
            stringBuilder.append(line);
        }

        // 关闭流
        bReader.close();
        // 关闭链接
        connection.disconnect();
        // 打印获取的结果
        System.out.println(stringBuilder.toString());

        // 将获得的String对象转为JSON格式
        JSONObject jsonObject = JSONObject.fromObject(stringBuilder.toString());
        // 通过利用JSON键值对的key,来查询value
        System.out.println("book name : " + jsonObject.get("subtitle").toString());
        System.out.println("author : " + jsonObject.get("author").toString());
        System.out.println("summary : " + jsonObject.get("summary").toString());

        // 对于value也是JSON的对象,将对象的value转为一个新的JSON继续进行
        JSONObject aObject = JSONObject.fromObject(jsonObject.get("images").toString());
        System.out.println("images:  " + aObject.get("small").toString());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
执行结果: 
--------------------- 
作者:parallel_1996 
来源:CSDN 
原文:https://blog.csdn.net/Applying/article/details/80900173 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java发送POST请求并返回JSON数据,需要借助一些Java库以及对HTTP协议的理解。具体步骤如下: 1. 导入相关Java库:通常情况下,发送HTTP请求需要先引入Java开发常用的HTTP客户端库,如Apache的HttpClient、OkHttp等。同时,如果需要解析JSON数据,需要引入JSON解析库,如Gson等。 2. 创建HTTP请求对象:使用HttpClient或OkHttp等库,创建HttpPost请求对象,并设置POST请求需要传递的参数、请求头等信息。 3. 发送HTTP POST请求:使用HttpClient或OkHttp等库,发送HttpPost请求,并返回服务器响应结果。 4. 解析服务器响应结果:根据实际情况,使用响应结果的数据格式,对响应结果进行JSON数据解析。通常情况下,使用Gson等JSON解析库,可以将JSON数据转换为Java对象,方便后续处理。 示例代码: 使用HttpClient发送POST请求并返回JSON数据: ```java HttpClient httpClient = HttpClientBuilder.create().build(); HttpPost httpPost = new HttpPost(URL); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("param1", "value1")); params.add(new BasicNameValuePair("param2", "value2")); httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); HttpResponse httpResponse = httpClient.execute(httpPost); String jsonString = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); Gson gson = new Gson(); MyResponse myResponse = gson.fromJson(jsonString, MyResponse.class); ``` 使用OkHttp发送POST请求并返回JSON数据: ```java OkHttpClient okHttpClient = new OkHttpClient(); RequestBody requestBody = new FormBody.Builder() .add("param1", "value1") .add("param2", "value2") .build(); Request request = new Request.Builder() .url(URL) .post(requestBody) .build(); Response response = okHttpClient.newCall(request).execute(); String jsonString = response.body().string(); Gson gson = new Gson(); MyResponse myResponse = gson.fromJson(jsonString, MyResponse.class); ``` 其中,MyResponse是根据服务器返回的JSON数据定义的Java对象。以上示例代码仅供参考,具体实现需要根据具体场景进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值