我正在尝试使用 goo.gl URL Shortener API 一个开源库 (qwest.js) 来缩短 URL。我已经使用 jquery 成功实现了它,但是它给了我错误“这个 API 不支持解析表单编码的输入。”使用 qwest 完成后。
我的 jquery 代码:
var longURL = "http://www.google.com/";
$.ajax({
url: 'https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyANFw1rVq_vnIzT4vVOwIw3fF1qHXV7Mjw',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: '{ longUrl:"'+ longURL+'"}',
success: function(response) {
console.log(response)
}
})
.done(function(res) {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
和 qwest.js 的非工作代码
var longURL = "http://www.google.com/"
qwest.post('https://www.googleapis.com/urlshortener/v1/url?key=479dfb502221d2b4c4a0433c600e16ba5dc0df4e&',
{longUrl: longURL},
{responseType:'application/json; charset=utf-8'})
.then(function(response) {
// Make some useful actions
})
.catch(function(e, url) {
// Process the error
});
强烈推荐任何帮助。
最佳答案
qwest 的作者在这里;)
如文档中所述: the default Content-Type header is application/x-www-form-urlencoded for post and xhr2 data types, with a POST request
。
但是 Google Shortener 服务不接受它。我假设它需要一个 JSON 输入类型。然后你应该将 qwest 的 dataType
选项设置为 json
。此外,您的 responseType
选项无效并且不遵循文档。通常,如果 Google 使用有效的 Content-Type
header 回复请求,则不必设置它。这是好的代码:qwest.post('https://www.googleapis.com/urlshortener/v1/url?key=479dfb502221d2b4c4a0433c600e16ba5dc0df4e&', {longUrl: longURL}, {dataType:'json'})
如果 Google 未发送可识别的 Content-Type
,只需将 responseType
选项也设置为 json
即可。
关于javascript - 使用 qwest.js 到 goo.gl url 缩短器 api 的 AJAX 发布请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29172753/