Search code examples
javascriptebay-api

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


I'm new to eBay's API, have been creating url string and appending it to a JS-created 'script' tag, only been calling findItem / findItemAdvanced so far and had no problems receiving and processing the response.

Problem is I tried a getSingleItem request and wada-ya-know error after error.

First Attempt:

<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>

Which is an exact duplicate of the method for the find call except for the 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'

So I ask myself why, go on the hunt, find out about several different methods to make the call & finally decide that the jQuery $.ajax() GET/POST method is best suited to my limited coding capability.

After much practice I came up with a call that works for the finding but not the damn 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); }
  });
});

I've already had to fight past the xml/jsonp barrier to get this far and now this error:

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

Is popping up no matter what I try to get my head around.


Solution

  • You code says:

    responseencoding=XML
    

    and:

    RESPONSE-DATA-FORMAT=XML
    

    XML is not JSONP.

    To process a response as JSONP, the server must format the response as JSONP.

    eBay's API may or may not support JSONP, but if it does, you have to ask for that and not for XML.