2012-11-27 4 views
0

http get을 사용하여 Java 코드에서 wordnet의 끝점을 쿼리하려고합니다. "wordnet.rkbexplorer.com"엔드 포인트에 연결이되지만 sparsql- 쿼리가 올바르지 않은 오류가 발생합니다. 검색어 자체는 wordnet.rkbexplorer.com의 웹 사이트에 입력 할 때 실행됩니다. GTTP에 대한 URL의 구문이 올바르지 않습니까? 나는 그 지역에서 많은 경험을하지 못했다.WordNet 및 HTTP GET

내 코드 :

URL url = new URL("http://wordnet.rkbexplorer.com/sparql/?query="+query); 
HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
con.setRequestMethod("GET"); 
String query = "PREFIX id: <http://wordnet.rkbexplorer.com/id/> " 
       + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> " 
       + "SELECT * WHERE { ?s rdfs:label ?o } LIMIT 10"; 

오류는 :

error at URI 3store:default#:1 - syntax error, unexpected $end, expecting identifier 

답변

0

Firebug 같은으로 디버깅 할 수 있습니다. 그 네트워크 탭은 HTTP 레벨에서 서버로 보내지는 것을 보여줍니다. 이 경우 POST를 사용하는 웹 페이지의 양식을 볼 수 있습니다. 서버는 POST를 기대하는 것, 그리고이 작품 :

curl --data "query=PREFIX id: <http://wordnet.rkbexplorer.com/id/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT * WHERE { ?s rdfs:label ?o } LIMIT 10" "http://wordnet.rkbexplorer.com/sparql/" 

그래서 그냥 GET 대신 POST를 사용하도록 코드를 전환 할 수 있습니다.

+0

안녕 다니엘. 엔드 포인트의 웹 사이트에는 http get이 가능하다는 정보가 있습니다. "/ sparql /? query = ...에 HTTP GET 요청을 할 수도 있습니다." 나는 그것을 시험해보고 싶다. HTTP POST에 대한 Java 코드가 작동하지만 어쩌면 내가 찾을 수없는 http get에 대한 약간의 오류가있을 수 있습니다. – Salvadora

+0

이것은 GET 요청의 인코딩 문제인 것 같습니다. 예를 들어,이 작품은 다음과 같습니다. curl "http://southampton.rkbexplorer.com/sparql/?query=PREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema "% 23 % 3E % 0D % 0ASELECT + * + WHERE + % 7B + % 3Fs + rdfs % 3A 라벨 + % 3Fo + % 7D + LIMIT + 10 % 0D % 0A % 0D % 0A" –

+0

다음을 추가하면 해결되는 문제 : query = URLEncoder.encode (query, "UTF-8"). 또한 인코딩이 문제라고 생각했지만 의견은 도움이되었습니다. Daniel 감사합니다! – Salvadora