无法从sharepoint列表中检索项目

时间:2017-01-11 07:20:09

标签: sharepoint typescript

我可以在浏览器中查看项目如果我在浏览器中使用它。我在下面的服务中使用相同的URL,并且没有响应,如果我用exp的一些全局api url更改url:“https://api.spotify.com/v1/search?type=artist&q=”它按预期工作。所以实际服务也有效。

这意味着我关于sharepoint list api的问题,它需要一些特定的参数,但是无法弄清楚我在浏览器中做了什么但是在该服务的http请求中没有。

api.service:

import {Http} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import {Injectable}  from '@angular/core';

@Injectable()
export class dService {
    constructor(private http_: Http){}
    getAnnouncements(urllapi){
        return this.http_.get(urllapi).map(res=>res.json());
    }
}

-

//this.someService.getAnnouncements("https://api.spotify.com/v1/search?type=artist&q=") it works as I expected 
this.someService.getAnnouncements("http://milespoint1:33333/_api/web/lists/getByTitle('Announcement5Jan')/items").subscribe((res) => {
             debugger
             this.tweetsdata = res.json().data.statuses;
      this.isLoading=false;
             console.log("spotify service data:"+res)});

浏览器: enter image description here

1 个答案:

答案 0 :(得分:0)

如果您没有要求严格JSON数据,SharePoint REST API将为您提供XML数据(与您的浏览器相同的数据),从而使您的

this.tweetsdata = res.json()

行失败。尝试将服务构造函数和方法更改为

import {Http, Response, Headers} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import {Injectable}  from '@angular/core';

@Injectable()
export class dService {
    private headers: Headers;

    constructor(private http_: Http){
          this.headers = new Headers();
          this.headers.append('Content-Type', 'application/json');
          this.headers.append('Accept', 'application/json;odata=verbose');
    }

    getAnnouncements(urllapi){
        return this.http_.get(urllapi, {headers: this.headers}).map(res=>res.json());
    }
}

如果有帮助,请告诉我。