首页 > 编程语言 >java httpclient调用接口

java httpclient调用接口

时间:2025-01-23 22:58:28浏览次数:1  
标签:java System 接口 apache println import out response httpclient

  1. 需要引入依赖
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>
  1. 使用案例
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.net.URI;
import java.nio.charset.Charset;

public class UseHttpclientDemo {
    public static void main(String[] args) {
        String postResultData = postResult();
        if (postResultData == null) {
            System.out.println("{\"errno\":-1,\"errmsg\":\"fail\",\"message\":\"调用接口获取数据失败\"}");
            return;
        }
        System.out.println(postResultData);

        String getResultData = getResult();
        if (getResultData == null) {
            System.out.println("{\"errno\":-1,\"errmsg\":\"fail\",\"message\":\"调用接口获取数据失败\"}");
            return;
        }
        System.out.println(getResultData);
    }

    public static String postResult() {
        //超时时间
        /**
         * RequestConfig.DEFAULT == 一直请求
         * RequestConfig.DEFAULT == RequestConfig.custom()
         *          .setConnectTimeout(-1).setConnectionRequestTimeout(-1).setSocketTimeout(-1)
         *          .build();
         */
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(3000) //连接主机超时时间
                .setConnectionRequestTimeout(4000) //请求超时时间
                .setSocketTimeout(5000) //数据读取超时时间
                .build();
        //请求体
        StringEntity requestBody = new StringEntity("{\"invoke_info\":{\"pos_1\":[{}],\"pos_2\":[{}],\"pos_3\":[{}]}}", ContentType.APPLICATION_JSON);


        //http客户端
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //post请求
        HttpPost postRequest = new HttpPost();
        postRequest.setConfig(requestConfig);
        postRequest.setURI(URI.create("https://ug.baidu.com/mcp/pc/pcsearch")); //请求路径
        postRequest.addHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString()); //请求头
        postRequest.addHeader("xxx","xxx");
        postRequest.addHeader("xxx","xxx");
        postRequest.setEntity(requestBody); //请求体
        String result = null;
        try {
            //发送请求
            CloseableHttpResponse response = httpClient.execute(postRequest);
            if (response == null || response.getStatusLine() == null || response.getStatusLine().getStatusCode() !=200) {
                return null;
            }
            /**
             * response.getHeaders("xxx"); //响应头
             * response.getEntity().getContent(); //响应体(获取文件数据)
             * EntityUtils.toString(response.getEntity(), Charset.defaultCharset()); //响应体(获取json数据)
             */
            //响应内容
            String responseBody = EntityUtils.toString(response.getEntity(), Charset.defaultCharset()); //响应体(获取json数据)
            result = responseBody;
        } catch (ClientProtocolException e) {
            //接口调用异常或接口数据传输异常
            System.out.println("接口调用异常:"+e);
            System.out.println(ExceptionUtils.getStackTrace(e));
        } catch (IOException e) {
            //接口数据传输异常
            System.out.println("接口调用异常:"+e);
            System.out.println(ExceptionUtils.getStackTrace(e));
        } finally {
            if (httpClient != null) {
                try {
                    httpClient.close();
                } catch (IOException e) {
                    //关闭httpclient失败
                    System.out.println("关闭httpclient失败:");
                    System.out.println(ExceptionUtils.getStackTrace(e));
                }
            }
        }
        return result;
    }

    public static String getResult() {
        //超时时间
        /**
         * RequestConfig.DEFAULT == 一直请求
         * RequestConfig.DEFAULT == RequestConfig.custom()
         *          .setConnectTimeout(-1).setConnectionRequestTimeout(-1).setSocketTimeout(-1)
         *          .build();
         */
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(3000) //连接主机超时时间
                .setConnectionRequestTimeout(4000) //请求超时时间
                .setSocketTimeout(5000) //数据读取超时时间
                .build();

        //http客户端
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //post请求
        HttpGet getRequest = new HttpGet();
        getRequest.setConfig(requestConfig);
        getRequest.setURI(URI.create("https://dict.youdao.com/login/acc/query/accountinfo?withCredentials=true&caKu=3")); //请求路径+入参
        getRequest.addHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString()); //请求头
        getRequest.addHeader("xxx","xxx");
        getRequest.addHeader("xxx","xxx");
        String result = null;
        try {
            //发送请求
            CloseableHttpResponse response = httpClient.execute(getRequest);
            if (response == null || response.getStatusLine() == null || response.getStatusLine().getStatusCode() !=200) {
                return null;
            }
            /**
             * response.getHeaders("xxx"); //响应头
             * response.getEntity().getContent(); //响应体(获取文件数据)
             * EntityUtils.toString(response.getEntity(), Charset.defaultCharset()); //响应体(获取json数据)
             */
            //响应内容
            String responseBody = EntityUtils.toString(response.getEntity(), Charset.defaultCharset()); //响应体(获取json数据)
            result = responseBody;
        } catch (ClientProtocolException e) {
            //接口调用异常或接口数据传输异常
            System.out.println("接口调用异常:"+e);
            System.out.println(ExceptionUtils.getStackTrace(e));
        } catch (IOException e) {
            //接口数据传输异常
            System.out.println("接口调用异常:"+e);
            System.out.println(ExceptionUtils.getStackTrace(e));
        } finally {
            if (httpClient != null) {
                try {
                    httpClient.close();
                } catch (IOException e) {
                    //关闭httpclient失败
                    System.out.println("关闭httpclient失败:");
                    System.out.println(ExceptionUtils.getStackTrace(e));
                }
            }
        }
        return result;
    }
}

标签:java,System,接口,apache,println,import,out,response,httpclient
From: https://www.cnblogs.com/gaoguanghui/p/18688749

相关文章

  • 基于Java+SpringBoot的华府便利店信息管理系统
    关注底部领取源码疑等源码编号:S175源码名称:基于SpringBoot的华府便利店信息管理系统用户类型:双角色,用户、管理员主要技术:Java、Vue、ElementUl、SpringBoot运行环境:Windows/Mac、JDK1.8及以上运行工具:IDEA/Eclipse数 据 库:MySQL5.7及以上版本数据库表数量:11张表......
  • 基于Java+SpringBoot的华府便利店信息管理系统
    关注底部领取源码疑等源码编号:S175源码名称:基于SpringBoot的华府便利店信息管理系统用户类型:双角色,用户、管理员主要技术:Java、Vue、ElementUl、SpringBoot运行环境:Windows/Mac、JDK1.8及以上运行工具:IDEA/Eclipse数 据 库:MySQL5.7及以上版本数据库表数量:11张表......
  • Java方法
    方法System.out.prinfln();//类.对象.方法publicstaticvoidmain(String[]args){intsum=max(1,1);System.out.println(sum);}publicstaticintmax(inta,intb){intresult=0;if(a==b){System.out.println("a==b");......
  • API接口开发设计
    写接口看似是一个很简单的事情,但是往往越简单的事情越不容易做好,让我们看看如何写好一个接口。01.什么是接口接口其实是一种规范,在生活中随处可见,比如:不同厂商的水管使用统一的水管接口对接、电脑厂商和配件厂商按照统一的USB接口标准进行生产完成配对、应用程序之间通过API......
  • 第五章java面向对象编程(上)
    面向对象编程Java的核心就是OOP初始面向对象面向过程思想:步骤思维清晰,第一步做什么,第二步做什么…。适合解决一些简单的问题面向对象思想:物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行独立思考。最后,才对某个分类下的细节进行面向过程的......
  • Effective C++ 规则41:了解隐式接口和编译期多态
    1、隐式接口C++中的隐式接口是指类或者模板中不显式声明为接口的一部分,但仍然可以像接口一样使用的成员或方法。隐式接口通常指那些不显式声明为虚函数的函数或者方法,但在多态上下文中仍然能表现出类似接口的行为。隐式接口通常出现在模板编程中,尤其是模板类型推导、S......
  • Java基础学习(九)
    Java基础学习(九):常用API目录Java基础学习(九):常用APIMathSystemRuntimeObjectObjectsBigIntegerBigDecimal正则表达式Pattern和Matcher时间相关类包装类本文为个人学习记录,内容学习自黑马程序员Math路径:java.lang.Math是一个用于帮助我们进行数学计算的工具类常用方......
  • java入门概念
    第一章:java概述基本概念:什么是程序?计算机如何执行程序?计算机可识别的有序指令集,将源文件编译为目标文件,将目标文件和库文件等资源链接形成可执行文件,计算机执行这个文件的指令java重要特点:1,面对对象的(oop)2,健壮的3,跨平台windows/Linux(编译后都可用通过jvm实现)4,解......
  • 使用 Java 和 Tesseract 实现验证码识别
    验证码是防止自动化操作的重要手段,而OCR(光学字符识别)技术使得识别验证码成为可能。在本文中,我们将使用Java和TesseractOCR引擎,开发一个简单的验证码识别工具。环境准备安装TesseractOCR在开始之前,你需要安装TesseractOCR,这是实现光学字符识别的核心工具。Windows:......
  • Java方法
    Java方法例如:System.out.println();---->分别为(类.对象.方法)Java方法是语句的集合。它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:一个方法只完成一个功能,这样有利于我们后期的......