2016-11-01 18 views
2

StardogトリプルストアからいくつかのデータをAngularに取得しようとしていましたが、実際に動作させるのに苦労しています。まったく同じヘッダーとパラメータで、カールからサービスにアクセスするのに問題はありません。私はまた、パラメータの部分を省略してみて、運がない完全なurl( 'localhost:5820/myDB/query?reasoning = false & query = SELECT * WHERE {?s?p?}')を入力してみました。ヘッダーとパラメーターが角2のHTTP GETリクエスト

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

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

+0

ありがとうございます。残念ながら、私はこのヘッダを削除するとまだ404を受け取っています。 – MadsHolten

0

さて、私が必要としたのは良い夜の睡眠だった。問題は、実際のAPIを模倣するためのメモリ内テストAPIをセットアップしたことでした。上記のコードは魅力的に機能します:D

関連する問題