[英]HTTP GET request with headers and parameters in Angular 2
我試圖從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());
}
您將內容類型指定為application/rdf+xml
,這是錯誤的(沒有內容)。 如SPARQL規范所述,在這種情況下,您不應具有內容類型,而在其他情況下,則應使用application/x-www-form-urlencoded
(通過URL編碼的POST查詢)或application/sparql-query
(查詢通過POST直接)。
好吧,所以我需要睡個好覺。 問題是我已經設置了一個內存中的測試api來模仿真實的api。 上面的代碼就像一個魅力:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.