java 在Anylogic中调用外部API

8dtrkrch  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(190)

是否可以在Anylogic中创建一个API,调用天气API来获取温度,日出等数据?
我在Python中有一个现有的API调用,它将我所需的数据保存在Excel文件中。Anylogic可以启动我的外部Python .exe或.py来刷新值并在特定的模型时间将它们更新到Anylogic吗?
或者以其他方式:是否可以生成API调用的Java类或Java接口?如何在Anylogic中调用Java类/接口来运行?

kpbwa7wx

kpbwa7wx1#

你当然可以!这里有一个模型的链接,其中包括一些对外部API的示例调用。
Example API Calls from AnyLogic (downloadable model)
您可能也对Pypeline感兴趣,它是一个由泰勒Wolfeadam创建的自定义AnyLogic库,其中包含一个块,可用于在Anylogic中运行Python代码。这里有一个github仓库的链接:Pypeline Github

**注意:**有时需要额外的工作来从AnyLogic云进行API调用和Pypeline工作。

carvr3hs

carvr3hs2#

从Anylogic发出HTTP请求应该没有任何问题,你要做的第一件事就是导入所有正确的库,这些库在模型属性上提供原生Java:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

接下来,创建这个函数,如果你想发出一个以JSON格式给出响应的HTTP请求,这就是要走的路。

try {
        
        String url = "https://www.example.com";

        // Open the connection
        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
        
        // Method
        connection.setRequestMethod("GET");

        // Response
        int responseCode = connection.getResponseCode();
        System.out.println("Código de respuesta: " + responseCode);

        // Read the response
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;
        StringBuilder response = new StringBuilder();

        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
        reader.close();

        
        System.out.println("Response:");
        System.out.println(response.toString());

        // Close the connection
        connection.disconnect();

    } catch (IOException e) {
        e.printStackTrace();
    }

相关问题