2012-11-27 43 views
0

我想用http get從java代碼中查詢wordnet的端點。 我得到連接到端點「wordnet.rkbexplorer.com」,但我得到一個錯誤,那個sparsql查詢不正確。查詢本身是在wordnet.rkbexplorer.com的網站上輸入時執行的。我的GTTP GET的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。服務器似乎期望開機自檢,並且這可以工作:

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/" 

因此,只需將您的代碼切換爲使用POST而不是GET即可。

+0

嗨丹尼爾。在端點的網站上有一個信息,http get也是可能的:「你也可以向/ sparql /?query = ...發送HTTP GET請求。」我想嘗試一下。我的Java的HTTP代碼的HTTP POST的作品,但也許我有我的代碼爲http獲取,我找不到一些小錯誤。 – 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%3Alabel +%3Fo +%7D + LIMIT + 10%0D%0A%0D%0A「 –

+0

問題通過添加:query = URLEncoder.encode(query, 「UTF-8」)。我也認爲,編碼是問題,但你的評論無論如何都是有幫助的。謝謝丹尼爾! – Salvadora