【问题标题】:HTTP GET request with headers and parameters in Angular 2Angular 2中带有标头和参数的HTTP GET请求
【发布时间】:2016-11-01 16:12:19
【问题描述】:

我试图从 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());
}

【问题讨论】:

    标签: http angular typescript sparql stardog


    【解决方案1】:

    您将内容类型指定为application/rdf+xml,这是错误的(没有内容)。正如SPARQL spec 所述,在这种情况下,您不应该有内容类型,而在其他情况下,您应该使用application/x-www-form-urlencoded(通过URL 编码的POST 查询)或application/sparql-query(直接通过POST 查询)。

    【讨论】:

    • 感谢您澄清这一点。不幸的是,当我删除此标头时,我仍然收到 404。
    【解决方案2】:

    好的,所以我需要的是睡个好觉。问题是我已经建立了一个内存测试 api 来模仿一个真正的 api。上面的代码就像一个魅力:D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 2015-02-22
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      相关资源
      最近更新 更多