【问题标题】:WordNet and HTTP GETWordNet 和 HTTP GET
【发布时间】:2012-11-27 17:07:00
【问题描述】:

我想使用 http get 从 java 代码中查询 wordnet 的端点。 我得到了到端点“wordnet.rkbexplorer.com”的连接,但我得到一个错误,sparsql-query 不正确。当我在 wordnet.rkbexplorer.com 的网站上键入它时,查询本身就会被执行。我的 GTTP 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

【问题讨论】:

    标签: http-get wordnet


    【解决方案1】:

    这可以用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/"
    

    所以只需将您的代码切换为使用 POST 而不是 GET。

    【讨论】:

    • 你好丹尼尔。端点网站上有一条信息,http get 也是可能的:“您也可以向 /sparql/?query=... 发出 HTTP GET 请求”。我想试试。我的用于 HTTP POST 的 Java 代码可以工作,但我的 http get 代码中可能有一些小错误,我找不到。
    • 这似乎是 GET 请求的编码问题。例如,这对我有用: curl "southampton.rkbexplorer.com/sparql/…*+WHERE+%7B+%3Fs+rdfs%3Alabel+%3Fo+%7D+LIMIT+10%0D%0A%0D%0A"
    • 问题通过添加解决:query=URLEncoder.encode(query, "UTF-8")。我还认为,编码是问题所在,但无论如何你的评论很有帮助。谢谢丹尼尔!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2011-04-08
    相关资源
    最近更新 更多