将文件下载到我们正在执行 API 的系统中

我需要从第三方 API 下载文件。


我在我的应用程序中编写了一个 API,它调用第三方 API 并下载文件。我能够下载文件并成功解压缩。当我点击我的 API 时,这些文件被下载到部署代码的 tomcat 服务器中。


但我想将这些文件下载到我正在执行 API 的系统中。假设,如果我将该代码部署到测试环境服务器并使用来自本地系统的 curl 命令执行我的 API,那么文件应该被下载到我的本地系统中。无论如何我可以在Java中实现这一点吗?


public class SnapshotFilesServiceImplCopy {


public static final ILogger LOGGER = FWLogFactory.getLogger();


private RestTemplate mxRestTemplate = new RestTemplate();



public void listSnapShotFiles(String diId, String snapshotGuid) {


    LOGGER.debug("Entry - SnapshotFilesServiceImpl: FI=" + diId + " snapshotGuid=" + snapshotGuid);

    ResponseEntity responseEntity = null;

    HttpEntity entity = new HttpEntity(CommonUtil.getReportingAPIHeaders());

    String resourceURL = "files_url";

    try {

        responseEntity = mxRestTemplate.exchange(resourceURL, HttpMethod.GET, entity, String.class);

    } catch (RestClientException re) {

        if (re instanceof HttpStatusCodeException) {

            //TO be handled

        }

    }


    String data = (String) responseEntity.getBody();


    try {

        Object obj = new JSONParser().parse(data);

        JSONObject jsonObject = (JSONObject) obj;

        JSONArray jsonArray = (JSONArray) jsonObject.get("accounts");

        for (int i = 0; i < jsonArray.size(); i++) {

            String accountFileURL = (String) jsonArray.get(i);

            downloadAccountsData(diId, accountFileURL);

        }

    } catch (ParseException e) {

        e.printStackTrace();

    }



}



杨__羊羊
浏览 220回答 2
2回答

鸿蒙传说

假设,如果我将该代码部署到 QA 环境中并使用 curl 命令从我的本地系统执行我的 API,那么文件应该被下载到我的本地系统中。无论如何我可以在Java中实现这一点吗?如果一个或多个文件作为 HTTP 响应返回到您使用curl.或者……我想……如果您在本地系统上设置了一个 HTTP 服务器,并且 QA 系统通过向 HTTP 服务器发出 HTTP 请求(API 调用)来“传送”文件(实际上是反向上传!) .

MYYA

您可以将从第三方 API 接收到的文件存储在一个文件 (&nbsp;new File()) 对象中,然后可以将该文件对象保存在所需位置。我需要查看从第三方 API 下载文件的代码片段才能准确回答。您正在做的是将文件保存在服务器中(因为 tomcat 中的 Java 程序无法访问客户端机器),而不是将其返回给调用您的 API 的客户端。您需要打开另一个输出流,并使用该流将文件数据返回到客户端计算机。您可以参考本教程,了解如何使用流下载文件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python