我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java如何调用第三方接口

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java如何调用第三方接口

这篇“Java如何调用第三方接口”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何调用第三方接口”文章吧。

    一、 通过JDK网络类Java.net.HttpURLConnection

    1.java.net包下的原生java api提供的http请求

    使用步骤:

    通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)。

    设置请求的参数。

    发送请求。

    以输入流的形式获取返回内容。

    关闭输入流。

    2.HttpClientUtil工具类

    public class HttpClientUtil2 {        public static String doPost(String pathUrl, String data){        OutputStreamWriter out = null;        BufferedReader br = null;        String result = "";        try {            URL url = new URL(pathUrl);            //打开和url之间的连接            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            //设定请求的方法为"POST",默认是GET            //post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。            conn.setRequestMethod("POST");            //设置30秒连接超时            conn.setConnectTimeout(30000);            //设置30秒读取超时            conn.setReadTimeout(30000);            // 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false;            conn.setDoOutput(true);            // 设置是否从httpUrlConnection读入,默认情况下是true;            conn.setDoInput(true);            // Post请求不能使用缓存            conn.setUseCaches(false);            //设置通用的请求属性            conn.setRequestProperty("accept", "*            //获取URLConnection对象对应的输出流            //此处getOutputStream会隐含的进行connect(即:如同调用上面的connect()方法,所以在开发中不调用上述的connect()也可以)。            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");            //发送请求参数即数据            out.write(data);            //flush输出流的缓冲            out.flush();                        //获取URLConnection对象对应的输入流            InputStream is = conn.getInputStream();            //构造一个字符流缓存            br = new BufferedReader(new InputStreamReader(is));            String str = "";            while ((str = br.readLine()) != null){                result += str;            }            System.out.println(result);            //关闭流            is.close();            //断开连接,disconnect是在底层tcp socket链接空闲时才切断,如果正在被其他线程使用就不切断。            conn.disconnect();        } catch (Exception e) {            e.printStackTrace();        }finally {            try {                if (out != null){                    out.close();                }                if (br != null){                    br.close();                }            } catch (IOException e) {                e.printStackTrace();            }        }        return result;    }        public static String doGet(String pathUrl){        BufferedReader br = null;        String result = "";        try {            URL url = new URL(pathUrl);            //打开和url之间的连接            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            //设定请求的方法为"GET",默认是GET            //post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。            conn.setRequestMethod("GET");            //设置30秒连接超时            conn.setConnectTimeout(30000);            //设置30秒读取超时            conn.setReadTimeout(30000);            // 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false;            conn.setDoOutput(true);            // 设置是否从httpUrlConnection读入,默认情况下是true;            conn.setDoInput(true);            // Post请求不能使用缓存(get可以不使用)            conn.setUseCaches(false);            //设置通用的请求属性            conn.setRequestProperty("accept", "*            //获取URLConnection对象对应的输入流            InputStream is = conn.getInputStream();            //构造一个字符流缓存            br = new BufferedReader(new InputStreamReader(is, "UTF-8"));            String str = "";            while ((str = br.readLine()) != null){                result += str;            }            System.out.println(result);            //关闭流            is.close();            //断开连接,disconnect是在底层tcp socket链接空闲时才切断,如果正在被其他线程使用就不切断。            conn.disconnect();        } catch (Exception e) {            e.printStackTrace();        }finally {            try {                if (br != null){                    br.close();                }            } catch (IOException e) {                e.printStackTrace();            }        }        return result;    }}

    3.第三方api接口

    @RestController@RequestMapping("/api")public class HelloWorld {    private static final Logger log= LoggerFactory.getLogger(HelloWorld.class);    @GetMapping ("/getHello")    public Result getHelloWord(){        log.info("进入到api接口.......");        return Result.success("hello world api get 接口数据");    }    @PostMapping("/postHello")    public Result postHelloWord(@RequestBody User user){        log.info("进入post 方法.....");        System.out.println(user.toString());        return Result.success("hello world api post接口数据");    }}

    Java如何调用第三方接口

    4.测试类

     @Test    public void testJDKApi(){        //测试get方法        String s = HttpClientUtil2.doGet("http://localhost:9092/api/getHello");        System.out.println("get方法:"+s);        //测试post方法        User user = new User();        user.setUname("胡萝卜");        user.setRole("普通用户");        //把对象转换为json格式        String s1 = JsonUtil.toJson(user);        String postString = HttpClientUtil2.doPost("http://localhost:9092/api/postHello",s1);        System.out.println("post方法:"+postString);    }

    结果:

    Java如何调用第三方接口

    二、通过Apache common封装好的HttpClient

    1.引入依赖

     <!--HttpClient-->        <dependency>            <groupId>commons-httpclient</groupId>            <artifactId>commons-httpclient</artifactId>            <version>3.1</version>        </dependency>        <!--json-->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.2.28</version>        </dependency>

    2.httpClientUtil

    public class HttpClientUtil {        public static String doGet(String url, String charset){                HttpClient httpClient = new HttpClient();        //设置Http连接超时为5秒        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);                GetMethod getMethod = new GetMethod(url);        //设置get请求超时为5秒        getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);        //设置请求重试处理,用的是默认的重试处理:请求三次        getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());        String response = "";                try {            int statusCode = httpClient.executeMethod(getMethod);                        if (statusCode != HttpStatus.SC_OK){                System.err.println("请求出错:" + getMethod.getStatusLine());            }                        //HTTP响应头部信息,这里简单打印            Header[] headers = getMethod.getResponseHeaders();            for (Header h: headers){                System.out.println(h.getName() + "---------------" + h.getValue());            }            //读取HTTP响应内容,这里简单打印网页内容            //读取为字节数组            byte[] responseBody = getMethod.getResponseBody();            response = new String(responseBody, charset);            System.out.println("-----------response:" + response);            //读取为InputStream,在网页内容数据量大时候推荐使用            //InputStream response = getMethod.getResponseBodyAsStream();        } catch (HttpException e) {            //发生致命的异常,可能是协议不对或者返回的内容有问题            System.out.println("请检查输入的URL!");            e.printStackTrace();        } catch (IOException e){            //发生网络异常            System.out.println("发生网络异常!");        }finally {                        getMethod.releaseConnection();        }        return response;    }        public static String doPost(String url, JSONObject json){        HttpClient httpClient = new HttpClient();        PostMethod postMethod = new PostMethod(url);        postMethod.addRequestHeader("accept", "*@Configurationpublic class RestTemplateConfig {    @Bean    public RestTemplate restTemplate(ClientHttpRequestFactory factory){        return new RestTemplate(factory);    }    @Bean    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();        factory.setConnectTimeout(15000);        factory.setReadTimeout(5000);        return factory;    }}

    3.RestTemplate实现类

    @Componentpublic class RestTemplateToInterface {    @Autowired    private RestTemplate restTemplate;        public Result doGetWith2(String url){        ResponseEntity<Result> responseEntity = restTemplate.getForEntity(url, Result.class);        Result result = responseEntity.getBody();        return result;    }        public Result doGetWith3(String url){        Result result  = restTemplate.getForObject(url, Result.class);        return result;    }        public String doPostWith2(String url,User user){        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, user, String.class);        String body = responseEntity.getBody();        return body;    }        public String doPostWith3(String url,User user){        String body = restTemplate.postForObject(url, user, String.class);        return body;    }        public String doExchange(String url, Integer age, String name){        //header参数        HttpHeaders headers = new HttpHeaders();        String token = "asdfaf2322";        headers.add("authorization", token);        headers.setContentType(MediaType.APPLICATION_JSON);        //放入body中的json参数        JSONObject obj = new JSONObject();        obj.put("age", age);        obj.put("name", name);        //组装        HttpEntity<JSONObject> request = new HttpEntity<>(obj, headers);        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, request, String.class);        String body = responseEntity.getBody();        return body;    }}

    4.第三方api接口

    @RestController@RequestMapping("/api")public class HelloWorld {    private static final Logger log= LoggerFactory.getLogger(HelloWorld.class);    @GetMapping ("/getHello")    public Result getHelloWord(){        log.info("进入到api接口.......");        return Result.success("hello world api get 接口数据");    }    @PostMapping("/postHello")    public Result postHelloWord(@RequestBody User user){        log.info("进入post 方法.....");        System.out.println(user.toString());        return Result.success("hello world api post接口数据");    }}

    Java如何调用第三方接口

    5.测试类

    //注入使用@Autowiredprivate RestTemplateToInterface restTemplateToInterface;@Testpublic void testSpringBootApi(){    Result result= restTemplateToInterface.doGetWith2("http://localhost:9092/api/getHello");    System.out.println("get结果:"+result);    User user = new User();    user.setUname("胡萝卜");    user.setRole("普通用户");    String s = restTemplateToInterface.doPostWith2("http://localhost:9092/api/postHello", user);    System.out.println("post结果:"+s);}

    结果:

    Java如何调用第三方接口

    以上就是关于“Java如何调用第三方接口”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Java如何调用第三方接口

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Java如何调用第三方接口

    这篇“Java如何调用第三方接口”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何调用第三方接口”文章吧。一、 通过
    2023-07-02

    java怎么调用第三方接口

    在Java中调用第三方接口通常可以通过使用网络请求的方式来实现。以下是一种基本的方法:使用Java的内置网络请求类,比如HttpURLConnection或者HttpClient来发送HTTP请求到第三方接口的URL。根据第三方接口的要求
    java怎么调用第三方接口
    2024-03-05

    php如何调用第三方api接口

    要调用第三方API接口,可以使用PHP中的curl函数,示例如下:```php// 第三方API的URL$url = 'http://example.com/api';// 请求参数$data = ['param1' => 'value1'
    2023-08-30

    Java怎么调用第三方http接口

    Java可以通过以下几种方式调用第三方HTTP接口:1. 使用Java内置的HttpURLConnection类:```javaimport java.io.BufferedReader;import java.io.InputStream
    2023-08-17

    如何使用Feign调用第三方http接口

    本篇内容介绍了“如何使用Feign调用第三方http接口”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Feign调用第三方http接口我们平
    2023-06-29

    Java调用第三方接口封装实现

    本文主要介绍了Java调用第三方接口封装实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-16

    javaweb怎么调用第三方接口

    调用第三方接口的方法在JavaWeb中与其他Java应用程序相同,可以使用Java的网络编程库来发送HTTP请求并处理响应。以下是一个简单的示例代码,演示如何使用JavaWeb调用第三方接口:```javaimport java.io.Bu
    2023-08-23

    java异步调用第三方接口怎么实现

    在Java中,可以使用多线程或使用异步框架来实现异步调用第三方接口。1. 使用多线程:可以创建一个新的线程来执行第三方接口的调用操作,这样可以让主线程继续执行其他任务而不需要等待第三方接口的返回结果。可以使用Java的Thread类或者Ex
    2023-10-09

    Java调用第三方http接口的方式总结(四种)

    在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等) ①通过JDK网络类Java.net.HttpURLConn
    2023-08-16

    python开发接口怎么让第三方调用

    要让第三方调用Python开发的接口,可以采用以下几种方式:1. 使用HTTP协议:Python开发的接口可以通过HTTP协议暴露出来,第三方可以通过发送HTTP请求来调用接口。可以使用Flask、Django等Web框架来搭建接口,并提供
    2023-09-28

    python如何调用第三方库

    Python调用第三方库通常需要以下几个步骤:1. 安装第三方库:使用pip工具安装第三方库,比如`pip install requests`。2. 导入第三方库:在Python脚本中使用`import`语句导入第三方库,比如`import
    2023-10-11

    Springboot使用RestTemplate调用第三方接口的操作代码

    这篇文章主要介绍了Springboot使用RestTemplate调用第三方接口,我只演示了最常使用的请求方式get、post的简单使用方法,当然RestTemplate的功能还有很多,感兴趣的朋友可以参考RestTemplate源码
    2022-12-08

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录