我试图从Stardog三重商店获取一些数据到Angular,但我真的很努力让它工作。我使用完全相同的标头和参数从curl访问服务没有问题。我也尝试省略参数部分,只需输入完整的URL('localhost:5820 / myDB / query?reasoning = false& query = SELECT * WHERE {?s?p?o}'),但没有运气。
private _queryUrl = 'http://localhost:5820/myDB/query';
constructor(private _http: Http) {}
getData() {
let username : string = 'admin';
let password : string = 'admin';
let headers = new Headers();
headers.append('Authorization', "Basic " + btoa(username + ":" + password));
headers.append('Content-Type', 'application/rdf+xml');
headers.append('Accept', 'application/sparql-results+json');
let params = new URLSearchParams();
params.set('reasoning', 'false');
params.set('query', 'SELECT * WHERE {?s ?p ?o}');
let options = new RequestOptions({ headers: headers, search: params });
return this._http
.get(this._queryUrl, options)
.map((res: Response) => res.json());
}
答案 0 :(得分:0)
您指定的内容类型为application/rdf+xml
,这是错误的(没有内容)。正如SPARQL spec所述,在这种情况下,您不应该有内容类型,在其他情况下,您应该使用application/x-www-form-urlencoded
(通过URL编码的POST查询)或application/sparql-query
(通过POST直接查询)。
答案 1 :(得分:0)
好的,所以我需要的是一个美好的夜晚。问题是我已经建立了一个内存测试api来模仿一个真正的api。上面的代码就像一个魅力:D