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());
}
4

2 に答える 2

0

間違ったコンテンツ タイプを指定してapplication/rdf+xmlいます (コンテンツがありません)。SPARQL 仕様で述べられているように、この場合はコンテンツ タイプを持つべきではなく、それ以外の場合はapplication/x-www-form-urlencoded(URL エンコードされた POST によるapplication/sparql-queryクエリ) または (直接 POST によるクエリ) のいずれかを使用する必要があります。

于 2016-11-01T16:33:36.140 に答える
0

さて、私が必要としていたのは、ぐっすり眠ることでした。問題は、実際の API を模倣するインメモリ テスト API をセットアップしたことです。上記のコードは魅力のように機能します:D

于 2016-11-02T09:50:10.673 に答える