2016-08-08 44 views
2

我正在尝试使用instagram api获取某张照片。 不幸的是,似乎应对its CORS问题有点难。 所以我决定使用Jsonp.get来传递它。例外:对状态的响应:200 Ok对于URL:

这里是我的服务:

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

JSONP不支持对于那个URL,因为你在服务器端做,只是做普通的http.get,它应该工作 – krisrak

+0

@ krisrak当我使用hhtp.get它与cors抱怨。而且我无法用Cors做任何事情。 iis在那里? – user5363938

+0

它应该工作,我已经使用相同的网址与python没有问题,CORS是一个问题,当你打电话在客户端使用JavaScript,但在服务器端它不应该是一个问题 – krisrak

回答

0

您的jsonp实现看起来不错。什么你缺的是它们列为providers类似HTTP_PROVIDERS像这样在你的组件:

import {JSONP_PROVIDERS, Jsonp} from '@angular/http'; 

@Component({ 
    //... 
    providers : [JSONP_PROVIDERS] 
}); 

那么你可以使用subscribe消耗观测。

+0

它是一个服务,所以没有组件 – user5363938

+0

然后尝试将其添加到'main.ts'文件的'bootstrap'方法中。 – candidJ

+0

有帮助吗? @ user5363938 – candidJ

0

你可以尝试两种解决方案

  1. https://www.instagram.com/justinbieber/media/

    GETRESPONSE()的addHeader( “访问控制允许来源”, “*”)。

    _jsonp ---> HTTP

  2. 变化JSON字符串 例如:

    老串: “{ID:1,名称:32}”

    新的字符串:” __ng_jsonp__ .__ req1.finished( {ID:1,名称:32}

相关问题