gpt4 book ai didi

java - 访问远程服务器/其他网站时,如何在 Processing/Java 中使用 loadStrings?

转载 作者:行者123 更新时间:2023-11-30 08:27:13 25 4
gpt4 key购买 nike

我想在 Processing 中编写一个简单的程序,从这里获取数据:

https://btc-e.com/api/2/btc_usd/trades

并将它们显示在图表中。让我们考虑访问数据的最简单示例:

void setup() {
size(400,400);
}

void draw() {
background(0);
fill(244);
String[] t = loadStrings("https://btc-e.com/api/2/btc_usd/trades");
text(t[0],100,100);
}

当我直接从 Processing IDE(来自 Processing 1.5 和 2.0)将它作为 Java 应用程序运行时,这非常有效。但是后来我将其导出为 Java Applet(来自 Processing 1.5)我无法在本地主机或 OpenProcessing 上运行它。 Java Machine 运行,询问我是否要运行小程序,我接受,然后小程序保持灰色或白色,没有任何反应。这是什么原因?

是否存在任何安全问题,Java 机器不允许代码从其他服务器获取外部数据?有什么办法可以解决这个问题吗?

我强调,我在 Java/Java Applet 模式下工作,而不是在 JavaScript 中工作,我确信 JavaScript 不允许这样的数据源交叉。

最佳答案

您正在加载的数据是一个 JSON 格式的数组,因此 loadStrings 在这种情况下不会很有用。

你应该使用 loadJSONArray()JSONObject解析您正在加载的数组中每个条目的数据。

这是一个仅使用 amount 值的基本示例:

void setup(){
JSONArray data = loadJSONArray("https://btc-e.com/api/2/btc_usd/trades");//load the data

for (int i = 0; i < data.size(); i++) {//traverse the data

JSONObject entry = data.getJSONObject(i); //get each entry in the list/array
//parse the values
float amount = entry.getFloat("amount");
int price = entry.getInt("price");
String item = entry.getString("item");
String pc = entry.getString("price_currency");
int tid = entry.getInt("tid");
int date = entry.getInt("date");
String tt = entry.getString("trade_type");

//do something with the data
float x = (float)i/data.size() * width;
float y = 100 - (amount * 20);
line(x,height,x,y);
}
}

这是输出:

chart

另一个注意事项:在您的代码中,您在 draw() 循环中使用了 loadStrings,这意味着您每秒多次(默认情况下大约 60 次)一遍又一遍地加载相同的数据,这不是一个好主意。您应该加载一次数据,使其在顶级变量中可用,并在需要时在 draw() 循环中重用加载的数据。

此外,如果您正在加载外部数据,您可能需要签署小程序。查看this guide .我使用相同的指南发布 this applet .

关于java - 访问远程服务器/其他网站时,如何在 Processing/Java 中使用 loadStrings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com