OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(AdsAppsflyerUrlConstant.AGGREGATEPULLAPIV2.Partners.get.replace("{app-id}", appId).replace("{startDate}", startDate).replace("{endDate}", endDate)) .get() .addHeader("accept", AdsAppsflyerUrlConstant.accept) .addHeader("authorization", AdsAppsflyerUrlConstant.Token) .build();
调用完成,使用网络请求发送获取csv文件进行下载,下载完成后通过读取csv文件获取数据
try { Response response = client.newCall(request).execute(); if (response.code() == 200) { if (response.isSuccessful()) { String filePath = "D:/home/impression_share_report/" + formatter.format(new Date()) + appId + ".csv"; // 获取响应体字节流 byte[] responseBody = response.body().bytes(); // 创建文件并写入响应体数据 FileOutputStream fos = new FileOutputStream(filePath); fos.write(responseBody); fos.close(); System.out.println("文件下载成功!保存路径:" + filePath); File file = new File("E:/home/appsflyer/" + formatter.format(DateUtil.offsetDay(new Date(), -1)) + "-" + appId + ".csv"); file.delete(); List<AppsFlyerPartnersCSVDTO> list = csvReader("D:/home/impression_share_report/" + formatter.format(new Date()) + appId + ".csv"); //匹配数据进行入库操作 } else { throw new IOException("请求失败,错误码:" + response.code()); } } } catch (IOException e) { throw new RuntimeException(e); } catch (Exception e) { throw new RuntimeException(e); } CSV文件Reader读取
public static List<AppsFlyerPartnersCSVDTO> csvReader(String fileName) throws Exception { InputStreamReader reader = new InputStreamReader(new FileInputStream(fileName), Charset.forName("UTF-8")); CsvToBean<AppsFlyerPartnersCSVDTO> csvToBean = new CsvToBeanBuilder<AppsFlyerPartnersCSVDTO>(reader) .withType(AppsFlyerPartnersCSVDTO.class) .build(); List<AppsFlyerPartnersCSVDTO> list = csvToBean.parse(); reader.close(); return list; } 如果csv文件表头带有符号类型,在实体类中使用注解进行映射
@CsvBindByName(column = "Agency/PMD (af_prt)") private String agency;