我正在尝试使用instagram api来获取一些照片。
不幸的是,似乎有点难以应对its CORS问题。
所以我决定使用Jsonp.get
来传递它。
这是我的服务:
import {Http,Headers} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import {Injectable} from '@angular/core';
import {Gallery} from './gallery';
import {Jsonp} from '@angular/http';
@Injectable()
export class InstagramService{
constructor( private _http:Http,private _jsonp: Jsonp ){
}
getGallery(username: string) : Observable<Gallery> {
return this._jsonp.get("https://www.instagram.com/justinbieber/media/" ).map(res => res.json());
}
}
问题是,当我运行我的代码时,我面临错误:
EXCEPTION: Response with status: 200 Ok for URL: https://www.instagram.com/justinbieber/media/
那么这个错误是什么? 我该如何解决?
点: 我正在使用网址:
https://www.instagram.com/justinbieber/media/
它不需要身份验证,您可以在浏览器或邮递员中尝试。
我只对Get
请求感兴趣,所以我不需要post
等等。
答案 0 :(得分:0)
jsonp
的实施看起来很好。你遗漏的是在你的组件中将它们列为providers
,类似于HTTP_PROVIDERS
:
import {JSONP_PROVIDERS, Jsonp} from '@angular/http';
@Component({
//...
providers : [JSONP_PROVIDERS]
});
然后你可以使用subscribe
来消费observable。
答案 1 :(得分:0)
你可以尝试两种解决方案
https://www.instagram.com/justinbieber/media/
的GetResponse()的addHeader(&#34;访问控制允许来源&#34;&#34; *&#34);
_jsonp ---&gt; HTTP
更改json字符串 例如:
旧字符串:&#34; {id:1,名称:32}&#34;
新字符串:&#34; __ ng_jsonp __.__ req1.finished( {id:1,name:32} )&#34;