如何使用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結尾處正確解碼。