2015-08-11 3 views
0

Имея много затруднений, подключаясь к API Etsy с помощью http-jsonp.

URL отлично работает в браузере: https://openapi.etsy.com/v2/shops/GreatLakesModern/listings/active?api_key=5a61qc30hrvrqcperugollh5&fields=title&callback=JSON_CALLBACK

Но дает ошибку 404 с JSONP и 0 Ошибка состояния с $ http.get

Я не считаю, что это вопрос CORS, потому что, когда Я тестирую другие API на CodePen, они работают. Замените URL-адрес Etsy и не повезло.

Проведено еще несколько исследований и было установлено, что Etsy не совместим с CORS. С этими знаниями, как мне следует продолжить?

Пример: http://codepen.io/SitePoint/pen/YXXQxj?editors=101

Я попробовал ассортимент решений, но вот мой текущий код:

var url = "https://openapi.etsy.com/v2/shops/GreatLakesModern/listings/active?api_key=5a61qc30hrvrqcperugollh5&fields=title&callback=JSON_CALLBACK"; 

$http.jsonp(url)    
      .success(function (data) {$scope.details = "Success";}) 
      .error(function (data, status) {$scope.details = "Nope"+""+status;}); 
+0

Просто потому, что другие интерфейсы работают, не означает, что Etsy один не подведет, потому что из CORS ... – JoseM

+0

Тест CORS показывает, что если сбой: http://client.cors-api.appspot.com/client#?client_method=GET&client_credentials=false&server_url=https%3A%2F%2Fopenapi.etsy.com%2Fv2% 2Fshops% 2FGreatLakesModern% 2Flistings% 2Factive% 3Fapi_key% 3D5a61qc30hrvrqcperugollh5% 26fields% 3Dtitle% 26callback% 3DJSON_CALLBACK & server_enable = истина & server_s tatus = 200 & server_credentials = false & server_tabs = remote – JoseM

+0

@JoseM Это справедливо. Я фактически сделал еще несколько исследований и обнаружил, что Etsy действительно не совместим с CORS. С этими знаниями, что мне делать? – James

ответ

0

Я просто смотрел на ссылку вы публикуемую и действительно кажется, что Etsy поддерживает JSONP. Но вы должны изменить, как вы называете их api.

Вместо https://..../active?api_key= ...

Вам нужно сделать https://..../active.js?api_key=...&callback=etsyResult123

Обратите внимание на добавление .js части.

Точнее, с $http.jsonp апи ANGULAR в это было бы

var url = "https://openapi.etsy.com/v2/shops/GreatLakesModern/listings/active.js?api_key=5a61qc30hrvrqcperugollh5&fields=title&callback=JSON_CALLBACK"; 

Вот рабочая plnkr: http://plnkr.co/edit/ulaMTo?p=preview

+0

Да, я также рассмотрел ссылку Github и нашел то же самое решение. Данные также могут быть выборочно запрошены с помощью '& fields = title, url' (и т. Д.). Большое спасибо за ваше упорство. – James

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