2016-11-01 3 views
2

Я пытался получить данные из тройного магазина Stardog в Angular, но я действительно борюсь за то, чтобы заставить его работать. У меня нет проблем с доступом к сервису из curl с теми же заголовками и параметрами. Я также попытался пропустить часть параметров и просто набрать полный url («localhost: 5820/myDB/query? Reasoning = false & query = SELECT * WHERE {? S? P? O} ') без везения.HTTP GET запрос с заголовками и параметрами в Angular 2

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 (запрос через POST с URL-адресом), либо application/sparql-query (запрос через POST напрямую).

+0

Благодарим вас за разъяснение этого. К сожалению, я все еще получаю 404, когда удаляю этот заголовок. – MadsHolten

0

Хорошо, так что мне нужен был хороший ночной сон. Проблема заключалась в том, что я установил тест api в память, чтобы имитировать реальный api. Вышеприведенный код работает как шарм: D

Смежные вопросы