eBay API response error: Resource interpreted as Script but transferred with MIME type text/xml

eBay API response error: Resource interpreted as Script but transferred with MIME type text/xml

我是 eBay API 的新手,一直在创建 url 字符串并将其附加到 JS 创建的 'script' 标签,只调用了 findItem / findItemAdvanced 到目前为止,接收和处理响应没有问题。

问题是我尝试了 getSingleItem 请求和 wada-ya-know 错误。

第一次尝试:

<script>
  url='htt'+'p://open.api.ebay.com/shopping?'
          +'callname=GetSingleItem'
    +'&'+'responseencoding=XML'
    +'&'+'appid=********-2a4d-4b23-8d37-defc1bbb868f'
    +'&'+'siteid=0'
    +'&'+'version=515'
    +'&'+'ItemID=191467818411'
    +'&'+'callback=funCB'
  /******************************/
  elm=document.createElement('script')
  elm.src=url
  document.body.appendChild(elm)
</script>

这与 find 调用的方法完全相同,除了 url & REST-PAYLOAD:

  url='htt'+'p://svcs.ebay.com/services/search/FindingService/v1'
    +'?OPERATION-NAME=findItemsAdvanced'
    +'&SERVICE-VERSION=1.0.0'
    +'&SECURITY-APPNAME=********-2a4d-4b23-8d37-defc1bbb868f'
    +'&GLOBAL-ID=EBAY-GB'
    +'&RESPONSE-DATA-FORMAT=XML'
    +'&REST-PAYLOAD=true'

所以我问自己为什么,继续寻找,找出几种不同的调用方法并最终决定 jQuery $.ajax() GET/POST 方法最适合由于我有限的编码能力。

经过大量练习后,我想出了一个适用于 finding 而不是该死的 getItem url 的调用。

$(document).ready(function(){
  /******************************
  url='htt'+'p://svcs.ebay.com/services/search/FindingService/v1'
    +'?OPERATION-NAME=findItemsAdvanced'
    +'&SERVICE-VERSION=1.0.0'
    +'&SECURITY-APPNAME=********-2a4d-4b23-8d37-defc1bbb868f'
    +'&GLOBAL-ID=EBAY-GB'
    +'&RESPONSE-DATA-FORMAT=XML'
    +'&REST-PAYLOAD=true'
    +'&paginationInput.entriesPerPage=3'
    +'&keywords=charizard'
  /******************************/
  url='htt'+'p://open.api.ebay.com/shopping?'
    +'callname=GetSingleItem'
    +'&'+'responseencoding=XML'
    +'&'+'appid=********-2a4d-4b23-8d37-defc1bbb868f'
    +'&'+'siteid=0'
    +'&'+'version=515'
    +'&'+'ItemID=191467818411'
    +'&'+'IncludeSelector=Description'
  /************************************/
  var id;
  $.ajax({
    type: 'GET',
    url: url,
    dataType: 'jsonp',
    jsonp: 'callbackname',
    success: function(xml,status,request){ console.log(xml); },
    error: function(request,status,error){ alert('Status: '+status+'\n\nError: '+error); },
    complete: function(request,status){ alert('Finished & '+status); }
  });
});

我已经克服了 xml/jsonp 的障碍才走到这一步,现在出现了这个错误:

Resource interpreted as Script but transferred with MIME type text/xml

无论我怎么想,它都会弹出。

你的代码说:

responseencoding=XML

和:

RESPONSE-DATA-FORMAT=XML

XML 不是 JSONP。

要将响应处理为 JSONP,服务器必须将响应格式化为 JSONP。

eBay 的 API 可能支持也可能不支持 JSONP,但如果支持,您必须提出要求而不是 XML。