java调用第三方http接口

      企业级开发过程中会遇到很多第三方接口api调用的问题,有的公司自己封装了完整的三方接口调用规范,包括我们自己也有,接下来演示一种简单易懂的调用方法。

主要涉及一下几点:

1.打开和url之间的连接HttpURLConnection conn = (HttpURLConnection) url.openConnection();
2.设置通用的请求属性conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
3.设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入conn.setDoOutput(true);
conn.setDoInput(true);
4.断开连接,最好写上conn.disconnect();

 

这是调用完成输出的json格式,这是一个免费的天气接口,当然好多第三方接口是需要去自己注册的,比如百度,阿里,网易等等,里面有完整的接口文档,根据提供的接口文档可以自己编写需要的bean类,封装参数来进行调用

下面看代码,自己可以拿到本地测试一下:

package com.example.consumer.controller;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class InterfaceRequest {

    /***
     * @Author: GuoYunLong
     * @Date: 2019-03-19 15:10
     *   调用第三方或者对方接口方法
     *  @param path 对方或第三方提供的路径
     *  @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析
     */
    public static void interfaceDemo(String path, String data) {
        try {
            URL url = new URL(path);
            //打开和url之间的连接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            PrintWriter out = null;
            //请求方式
            //conn.setRequestMethod("POST");
            //设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            //获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            //发送请求参数即数据
            out.print(data);
            //缓冲数据
            out.flush();
            //获取URLConnection对象对应的输入流
            InputStream is = conn.getInputStream();
            //构造一个字符流缓存
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str = "";
            while ((str = br.readLine()) != null) {
                System.out.println(str);
            }
            //关闭流
            is.close();
            //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。
            //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
            conn.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        //第三方接口api地址
        String path = "https://www.apiopen.top/weatherApi?city=%E7%81%B5%E4%B8%98";
        //需要传送的数据
        String data = "";
        interfaceDemo(path, data);
        System.err.println("ok");

    }
}

//如果对你有所帮助,希望可以帮忙点个赞,留言一起学习

  • 17
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭优秀的笔记

你的支持就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值