如何解决通过 urlfetchapp 放置请求会产生“异常:属性提供无效值:Header:Content-Length”
目标是使用 urlfetchapp 和通过 Apps 脚本的放置请求将订单的“OrderStatusID”更新为“1”。
function updateOrderStatus(){
var private_key = "{private_key}";
var merchant_token = "{merchant_token}";
var secure_url = "{secure_url}";
var body = JSON.stringify({"OrderStatusID": "1"});
var url ="https://apirest.3dcart.com/3dCartWebAPI/v2/Orders/{orderID}";
var options = {
"method" : "put","headers" : {
"Content-Type" : "application/json","Content-Length" : body.length,"Accept" : 'application/json',"SecureURL" : secure_url,"PrivateKey" : private_key,"Token" : merchant_token
},"body" : body,"muteHttpExceptions" : false,}
try{
var response = UrlFetchApp.fetch(url,options);
}
catch(err){
Logger.log(err);
}
finally{
Logger.log(response);
}
}
代码抛出错误异常:属性提供无效值:Header:Content-Length
解决方法
将选项“body”的名称更改为“payload”解决了问题。
答案在此google issue tracker thread中找到。
ek...@googlers.comek...@googlers.com #6Apr 11,2016 07:03AM 状态: 无法修复(不可重现)UrlFetchApp 没有高级 名为“contentLength”的参数。内容长度标头是 根据传入的payload长度自动计算。 您在示例中设置的“contentLength”高级参数是 简单地被后端忽略并自动计算长度。
Content-Length 是根据有效负载自动计算的。我认为它应该被命名为 body 因为 3dCart API 文档在示例中使用 body 作为其 json 的名称。
更正的代码:
function updateOrderStatus(){
var private_key = "{private_key}";
var merchant_token = "{merchant_token}";
var secure_url = "{secure_url}";
var body = JSON.stringify({"OrderStatusID": "1"});
var url ="https://apirest.3dcart.com/3dCartWebAPI/v2/Orders/{orderID}";
var options = {
"method" : "put","headers" : {
"Content-Type" : "application/json",//"Content-Length" : body.length,"Accept" : 'application/json',"SecureURL" : secure_url,"PrivateKey" : private_key,"Token" : merchant_token
},"payload" : body,"muteHttpExceptions" : false,}
try{
var response = UrlFetchApp.fetch(url,options);
}
catch(err){
Logger.log(err);
}
finally{
Logger.log(response);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。