Flink 访问 Http请求

1.编写Http请求工具类

创建请求,添加请求头、请求体、查询参数,可参考HttpUrlConnection使用简介

import org.apache.flink.streaming.api.functions.source.RichSourceFunction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class HttpUtils extends RichSourceFunction<String> {
    private static final Logger LOGGER = LoggerFactory.getLogger(HttpUtils .class);
    private String url;
    private static HttpURLConnection con = null;
    private static BufferedReader in = null;

    public HttpUtils(String url) throws UnsupportedEncodingException {
        this.url = url;
        /*
           TODO 1.添加请求参数
           如果有一些查询参数,请求体参数直接拼接在url后边,拼接时注意使用指定字符格式(URLEncoder.encode),避免空格
                url = "https://open.feishu.cn/open-apis/bitable/v1/apps/"
                    + URLEncoder.encode("APP_TOKEN", "utf-8")
                    +"/tables/"+URLEncoder.encode("TABLE_ID", "utf-8")
                    +"/records?view_id="+URLEncoder.encode("VIEW_ID", "utf-8")
                    + ("HTTP_FILTER" != null ? "&filter=" + URLEncoder.encode("HTTP_FILTER", "utf-8") : "");
         */
    }

    @Override
    public void run(SourceContext<String> sourceContext) throws Exception {
        sourceContext.collect(httpGet(url));
        /*
            TODO 2.循环调用当前请求
            while(true) {
                sourceContext.collect(httpGet(url));
                Thread.sleep(this.sleepMs);
            }
         */
    }

    @Override
    public void cancel() {

    }

    private static String httpGet(String getUrl) {

        StringBuilder inputString = new StringBuilder();

        try {
            URL url = new URL(getUrl);
            con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");//设置请求模式
            //TODO 3.设置请求头参数(返回类型、字符集、token)
            con.setRequestProperty("Content-Type", "application/json");//设置请求头参数
            con.setRequestProperty("charset", "utf-8");
            con.setRequestProperty("Authorization", "Bearer YOUR_ACCESS_TOKEN");
            in = new BufferedReader(new InputStreamReader(con.getInputStream()));//字符流获取数据

            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                inputString.append(inputLine);
            }
        } catch (Exception var16) {
            LOGGER.warn("httpget threw: ", var16);
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
                if (con != null) {
                    con.disconnect();
                }
            } catch (Exception var15) {
                LOGGER.warn("httpget finally block threw: ", var15);
            }
        }
        return inputString.toString();
    }
}

2.Flink调用Http请求

import com.data.http.utlis.Httptest;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

public class HttpApp {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.addSource(new HttpUtils("你的url"))
                .print();
        env.execute();
    }
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值