簡體   English   中英

Angular 2中帶有標頭和參數的HTTP GET請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM