Java获取http和https协议返回的json数据

获取HTTP/HTTPS协议返回的JSON数据可以通过Java提供的HttpClient库来实现。以下是完整的攻略:

准备工作

在使用HttpClient库之前,需要先引入该库。可以在Maven项目中添加以下依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.12</version>
</dependency>

发送HTTP GET请求获取JSON数据

下面是一个示例代码,使用HttpGet方法发送HTTP GET请求获取JSON数据:

import java.io.IOException;
import java.util.Scanner;
import org.apache.http.HttpEntity;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class HttpJsonGetDemo {
  public static void main(String[] args) throws IOException {
    HttpClient httpClient = HttpClients.createDefault();
    HttpGet request = new HttpGet("https://jsonplaceholder.typicode.com/todos/1");

    HttpEntity responseEntity = httpClient.execute(request).getEntity();
    String responseString = EntityUtils.toString(responseEntity);

    ObjectMapper mapper = new ObjectMapper();
    JsonNode node = mapper.readTree(responseString);
    int id = node.get("id").asInt();
    String title = node.get("title").asText();
    boolean completed = node.get("completed").asBoolean();

    System.out.println("id: " + id);
    System.out.println("title: " + title);
    System.out.println("completed: " + completed);
  }
}

在这个示例中,我们使用了 HttpClient 发送了一个 HttpGet 请求,并获取返回数据后将其解析成一个 JsonNode 对象。

发送HTTPS GET请求获取JSON数据

如果需要访问HTTPS站点,需要对 HttpClient 进行配置。以下示例展示如何配置并发送HTTP GET请求:

import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.ssl.TrustStrategy;
import org.apache.http.util.EntityUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class HttpsJsonGetDemo {
  public static void main(String[] args) throws Exception {
    HttpClient httpClient = HttpClients.custom()
        .setSSLContext(SSLContexts.custom().loadTrustMaterial(null, new TrustStrategy() {
          @Override
          public boolean isTrusted(java.security.cert.X509Certificate[] chain, String authType)
              throws java.security.cert.CertificateException {
            return true;
          }
        }).build())
        .build();

    HttpGet request = new HttpGet("https://jsonplaceholder.typicode.com/todos/1");

    HttpEntity responseEntity = httpClient.execute(request).getEntity();
    String responseString = EntityUtils.toString(responseEntity);

    ObjectMapper mapper = new ObjectMapper();
    JsonNode node = mapper.readTree(responseString);
    int id = node.get("id").asInt();
    String title = node.get("title").asText();
    boolean completed = node.get("completed").asBoolean();

    System.out.println("id: " + id);
    System.out.println("title: " + title);
    System.out.println("completed: " + completed);
  }
}

在这个示例中,我们使用自定义的 HttpClient,将其SSL使用的证书设置为信任所有证书,从而允许访问HTTPS站点。通过以上示例代码,可以方便地使用Java获取http和https协议返回的JSON数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java获取http和https协议返回的json数据 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Java中的 CyclicBarrier详解

    Java中的 CyclicBarrier详解 1. 什么是CyclicBarrier CyclicBarrier是Java并发包中的一个类,可以让一组线程在某个条件达成时全部同时开始执行。简而言之,CyclicBarrier是一种同步机制,它允许指定的线程等待彼此到达某个同步点。 CyclicBarrier和CountDownLatch都可以用于线程间的同步…

    Java 2023年5月26日
    00
  • SpringBoot拦截器使用精讲

    Spring Boot拦截器使用精讲 拦截器是一种常用的技术,可以在请求到达控制器之前或之后执行一些操作。在Spring Boot中,可以使用拦截器来实现一些常见的功能,例如身份验证、日志记录、性能监控等。本文将深入讲解Spring Boot拦截器的使用,包括拦截器的定义、注册和使用,以及两个示例。 定义拦截器 在Spring Boot中,可以通过实现Han…

    Java 2023年5月15日
    00
  • java Springboot实现多文件上传功能

    下面是Java SpringBoot实现多文件上传功能的完整攻略: 1. 搭建SpringBoot工程 首先我们需要通过Maven或Gradle来搭建一个SpringBoot工程,这里以Maven为例: <dependency> <groupId>org.springframework.boot</groupId> &lt…

    Java 2023年5月19日
    00
  • Springboot之整合Socket连接案例

    在Spring Boot应用程序中,我们可以使用Socket连接来实现客户端和服务器之间的通信。以下是实现Spring Boot整合Socket连接的完整攻略: 创建服务器端 在Spring Boot应用程序中,我们可以创建一个服务器端来监听客户端的连接请求。以下是一个示例: @Component public class SocketServer { pr…

    Java 2023年5月15日
    00
  • Spring Security十分钟入门教程

    以下是“Spring Security十分钟入门教程”的完整攻略: 什么是Spring Security? Spring Security是一个功能强大,高度可定制的框架,用于保护Java应用程序的安全。 它提供了适用于Web应用程序的身份验证,授权,防止攻击(如CSRF)等保护功能。 怎样使用Spring Security? 步骤1:添加Maven依赖项 …

    Java 2023年5月20日
    00
  • SpringBoot中Dozer的使用小结

    《SpringBoot中 Dozer 的使用小结》 什么是 Dozer? Dozer是一个JavaBean与JavaBean之间的映射框架,它简化了JavaBean之间的转换,并且可以使用注解或XML文件定义映射规则。 Dozer的使用 引入依赖 在Maven中,我们需要添加以下依赖: <dependency> <groupId>co…

    Java 2023年5月20日
    00
  • 深入浅出讲解Spring框架中依赖注入与控制反转及应用

    深入浅出讲解Spring框架中依赖注入与控制反转及应用 什么是依赖注入和控制反转 在传统的 Java 应用中,在一个类中如果需要依赖另一个类的对象,我们通常会使用“new”关键字手动创建这个对象。例如: public class UserService { private UserDao userDao = new UserDao(); // 其他方法 //…

    Java 2023年5月19日
    00
  • java 语句块的使用详解及实例

    Java语句块的使用详解及实例 在Java中,语句块是一段包含多个语句的代码块,可以在其中定义新的变量和方法,这些变量和方法只在当前语句块内有效。本文将详细讲解Java语句块的使用及实例。 1. 什么是Java语句块? Java语句块是Java程序中的一种结构,用于组织和分类代码,Java中有四种类型的语句块: 普通代码块(即局部代码块):一般用来限定变量的…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部