#java #spring-boot #fuseki
#java #весенняя загрузка #fuseki
Вопрос:
Я хочу отправить запрос (тело) с запросом get, я знаю, что это не имеет смысла, но я хочу выполнить запрос get на другой конечной точке (здесь это сервер Fuseki), как мы делаем в запросе post.
public static final MediaType sparqlGet = MediaType.get("application/x-www-form-urlencoded; charset=utf-8");
static OkHttpClient client = new OkHttpClient();
public static String test() throws IOException, InterruptedException {
RequestBody body = RequestBody.create(
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>rnPREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>rnPREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>rnSELECT * WHERE {rn ?sub <http://www.semanticweb.org/hightech/ontologies/2019/8/untitled-ontology-4#domainName> ?obj .rn}rn"
, sparqlGet);
Request request = new Request.Builder()
.url("http://localhost:3030/eduDataSet/query")
.get()
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}catch (Exception e) {
return "exc";
}
public static String postTest() throws IOException {
RequestBody body = RequestBody.create(
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>rnPREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>rnPREFIX xx: <http://www.semanticweb.org/hightech/ontologies/2019/8/untitled-ontology-4#>rnINSERT DATA{rnt<http://www.semanticweb.org/hightech/ontologies/2019/8/untitled-ontology-4#Domain5> xx:domainName "spring".rn t<http://www.semanticweb.org/hightech/ontologies/2019/8/untitled-ontology-4#Domain5> xx:domainId "spring".rnrn}rnrn"
, sparql);
Request request = new Request.Builder()
.url ("http://localhost:3030/eduDataSet/update")
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}catch (Exception e) {
return "exc";
}
}
Ответ №1:
У GET нет тела запроса. Таким образом, все параметры должны отображаться в URL или в заголовке.
Комментарии:
1. спасибо за ответ, я понимаю, но каков способ выполнения запроса на другой конечной точке? Я попытался использовать post и отправить ему запрос select в виде тела, но, как и следовало ожидать, он выдает отсутствие параметра ‘update =’! каким будет решение
2. Вам нужно посмотреть на GET API, чтобы увидеть, какие поля он будет принимать.
Ответ №2:
Пробовать не стоит, даже если вы сможете, сервер будет проигнорирован, единственный способ отправить параметры в GET — использовать URL.
Посмотрите на объяснение здесь: https://dropbox.tech/developers/limitations-of-the-get-method-in-http
Комментарии:
1. спасибо за ответ, я понимаю, но каков способ выполнения запроса на другой конечной точке? Я попытался использовать post и отправить ему запрос select в виде тела, но, как и следовало ожидать, он выдает отсутствие параметра ‘update =’! каким будет решение