我正在尝试使用request POST到FastSpring的API来更新我的客户的订阅。我能够毫无问题地获得订阅,但是当谈到POST时,我似乎无法让它工作。
这是我的代码:
var options = {
method: 'POST',
url: 'https://api.fastspring.com/subscriptions',
headers: {
'Authorization': auth,
'User-Agent': 'request',
'Content-Type': 'application/json'
},
formData : {
'subscriptions': [
{
"subscription": subscriptionId,
"quantity": newQty,
"product": product,
"prorate": true
}
]
}
};
request.post(options, function (error, response, body) {
_logger.error('Fastspring API response: ' + JSON.stringify(response));
_logger.error('Fastspring API error: ' + JSON.stringify(error));
_logger.error('Fastspring API body: ' + JSON.stringify(body));
if (!error && response.statusCode === 200) {
res.status(200).send(JSON.parse(body));
} else {
_logger.error('Fastspring API Error: ' + error);
res.status(500).send({ 'error': error});
}
});
尝试POST的结果会导致以下错误:
TypeError: source.on is not a function
我查了一下,看到它失败的原因是请求无法接受我发送的formData。问题是没有它,我无法POST到FastSpring的API(如果我发送任何其他内容,我会收到错误消息“订阅未找到。”。
我的问题是:我可以以请求接受的任何方式发送我的formData吗?我已经在请求的问题页面上查看了这个问题,但找不到满意的答案。
答案 0 :(得分:1)
您是否尝试传递一些JSON数据?通常这种数据是用body而不是formData写的。
尝试这样的事情:
var myreq = request.post(...)
myreq.write(myJsonData);
myreq.end();