JSL을 사용하여 웹 서비스를 통해 외부 소스에서 데이터를 수집하는 방법은 무엇입니까?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕 모두,
학교 프로젝트의 경우 웹 서비스를 통해 dbpedia 소스에서 데이터를 수집해야합니다. 스크립팅 가이드에서 소켓이있는 외부 서버에 연결할 수 있음을 읽었습니다. 나는 그것을 시도했지만 사실은 Show 명령으로 dbpedia에서 검색된 데이터를 보려고 할 때 응답의 헤더 만 표시된다는 것입니다. 코드 디버깅을 시작하면 기적적으로 로그 창에서 응답의 일부만 볼 수 있습니다!
제발, 제가 문제를 해결하도록 도와 줄 수있는 사람이 있습니까?
여기에 쓴 JSL 스크립트를 첨부합니다.
베스트,
재 : JSL을 사용하여 webservices를 통해 외부 소스에서 데이터를 수집하는 방법?루프를 시도하고 "ok"리턴 코드를 확인했습니다. 데이터를 가져 오는 데 약 2 초가 걸립니다. 콘텐츠 길이가 해당 URL에서 올바르지 않을 수 있습니다. 견적으로 사용하거나 무시하고 리턴 코드를보십시오. 더 이상 데이터가 없으면 반환 값은 다음과 같습니다.
{ "Recv", "CLOSED : 데이터가 수신되지 않았습니다.", Blob에 대한 Char ( "", "ascii ~ hex")}
목록의 항목 2는 원격 서버가 연결을 닫을 때까지 "ok"입니다.
(서버의로드로 인해 2 초 결과가 많이 변경 될 수 있습니다. 특히 다른 사용자가 동시에 같은 데이터를 가져 오는 경우 특히 그렇습니다.)
재 : JSL을 사용하여 webservices를 통해 외부 소스에서 데이터를 수집하는 방법?대단히 감사합니다! 그것은 지금 일했습니다.
나는 While 루프에서 수신 된 데이터의 "Blob To Char"를 연결하여이 작업을 수행했습니다. 실제로 필자는 모양을 직접 연결하는 데 성공하지 못했습니다. 스크립트가 실행 중에 멈 춥니 다. 이제는 스크립트가 조금 더 오래 실행되지만 예상 결과가 표시됩니다.
결과를 계산하는 데 걸리는 시간을 줄이기위한 모든 트릭을 환영합니다.
다시 감사합니다 !
재 : JSL을 사용하여 webservices를 통해 외부 소스에서 데이터를 수집하는 방법?거의 다 왔어! 모든 데이터가 전달 될 때까지 연결을 반복해서 읽으십시오. << recv는 사용 가능한 모든 데이터로 즉시 리턴합니다. recv에 대한 길이 매개 변수는 매번 리턴되는 양을 제한합니다. 모두 사용할 수있을 때까지 기다리지 않습니다.
(나는 당신의 코드를 실행하여 recv를 통해 다시 recv를 실행하고 두번째로 데이터가 더 많이 흘렀다. 몇 초 동안 기다리면 모든 것을 얻을 수 있습니다. 너무 오래 기다리면 연결이 자동으로 닫힙니다.)
헤더는 Content-Length로 예상되는 데이터의 양을 알려줍니다.
루프가 끝날 때까지 반복하거나 나쁜 리턴 코드를 얻으십시오.
BLOB를 가져올 때 BLOB를 연결 한 다음 텍스트로 변환 할 수 있습니다. 바이너리 BLOB에 멀티 바이트 문자가있는 경우에는 recv 명령을 통해 분할 될 수 있으며 blob의 끝에서 올바르게 디코딩되지 않을 수 있습니다.