如何使用JSL通过webservices从外部源收集数据?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,大家好,
对于学校项目,我必须通过webservice从dbpedia源收集数据。我在脚本指南中读到我可以使用套接字连接到外部服务器。我试过了,但事实是,当我想用Show命令查看从dbpedia检索的数据时,只显示响应的标题。当我开始调试代码时,奇迹般地我只能在日志窗口中看到响应的一部分!
拜托,有没有人可以帮我解决问题?
我附上了我在这里写的JSL脚本。
最好,
Re:如何使用JSL通过webservices从外部源收集数据?我尝试了循环,检查“ok”返回代码。 获取数据大约需要2秒钟。 该URL的内容长度可能不太正确;使用它作为估计,或忽略它,并观察返回代码。 当没有更多数据时,返回的值如下所示:
{“Recv”,“CLOSED:没有收到数据。”,Char To Blob(“”,“ascii~hex”)}
列表中的项目2为“ok”,直到远程服务器关闭连接。
(服务器的负载可能会大大改变2秒的结果,特别是如果其他人同时获取相同的数据。)
Re:如何使用JSL通过webservices从外部源收集数据?非常感谢你 !它现在有效。
我是通过在While循环中连接接收数据的“Blob To Char”来完成的。事实上,我没有成功地直接连接blob:脚本在执行时停滞不前。现在,我的脚本运行了一段时间,但显示了预期的结果。
任何减少计算结果所需时间的技巧都是受欢迎的。
再次感谢你 !
Re:如何使用JSL通过webservices从外部源收集数据?你快到了!一次又一次地读取连接,直到所有数据都已传送完毕。 << recv立即返回任何可用数据。 recv的长度参数限制每次返回的金额;它不会等到它全部可用。
(我运行你的代码,通过recv,然后第二次运行recv,数据又流了一些。 如果你等几秒钟,你可能会得到它。 如果等待时间过长,连接将自动关闭。)
标题告诉您Content-Length需要多少数据:
循环,直到你有这么多或得到一个错误的返回代码。
您可以在获取blob时将其连接起来,然后转换为文本;如果二进制blob中存在多字节字符,则它们可能会在recv命令之间拆分,而不会在blob结尾处正确解码。