Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
315 views
in Technique[技术] by (71.8m points)

urlfetch - Google App Script external API return error 406

I'm trying to fetch a URL using optional advanced parameters in GAS:

function myFunction() {
  var options = {};
  options = {
    headers: {
      Authorization: 'Bearer ?????',
      'Content-Type': 'application/json',
    },
  };
  UrlFetchApp.fetch(<url>, options);
}

I always get:

Request failed for returned code 406 (line 52, file "Project").

HTTPResponse:

SyntaxError: Empty JSON string

I did the same fetching in Excel Power Query:

let
    Source = Json.Document(Web.Contents(<URL>, [Headers=[Authorization="Bearer 
?????????????", ContentType="application/json"]])),

And it works, it works also using Postman...

What's the problem with GAS? Please help me! Thanks in advance to everybody. Andrea

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

406 error is because content negotiation between server and client has failed. While setting Content-Type, It's possible that the accepted return content is also advertised as 'application/json' by Power query and Postman, but UrlFetchApp doesn't do the same. Adding a explicit Accept header solves this:

Accept: 'application/json'

###References:


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...