2017-04-07 11 views
0

requestをFastSpringのAPIにPOSTして、顧客の購読を更新しようとしています。私は問題なくサブスクリプションを手に入れることができますが、POSTに関しては、それを動作させることができません。リクエストHTTPクライアントライブラリを使用してFastSpring APIに投稿

ここ

が私のコードです:

 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を受け入れることができないということです。問題がなければ、私はFastSpringのAPIにPOSTすることができません(他に何かを送信するとエラーメッセージ "購読が見つかりませんでした"が表示されます)。

私の質問はです:要求によって受け入れられるフォームデータを送信することはできますか?私はリクエストの問題ページでこの問題を見てきましたが、満足のいく答えが見つかりませんでした。

答えて

1

JSONデータを渡そうとしていますか?通常、そのようなデータはformDataではなくbodyに書き込まれます。働い

var myreq = request.post(...) 
myreq.write(myJsonData); 
myreq.end(); 
+0

はこのような何かを試してみてください!ありがとうございました。将来これを見る人は、JSONデータを文字列にして適切に送信する必要があります(JSON.stringify(myJsonData))。ありがとう、@ mligor! – Juan