使用angular度服务传递json数据

我一直试图通过json请求使用angular2服务发布数据到节点API。但是,当我通过参数彻底angular2服务时,我的节点API接收undefined值。 下面是我的angular度服务代码

  enrolldegree(name,depart,enrollnumber,cgpa,university,token){ let peer = '["localhost:10151","localhost:10351"]'; let fcn = 'initDegree'; let argument = '["'+name+'","'+depart+'","'+enrollnumber+'","'+cgpa+'","'+university+']'; let headers = new Headers({'cache-control':'no-cache', 'Content-Type': 'application/json', 'authorization':'Bearer '+token}); let options = new RequestOptions({ headers: headers }); let body1 = new URLSearchParams(); body1.set('peers','["localhost:10151","localhost:10351"]'); body1.set('fcn',fcn); body1.set('args',argument); let body = JSON.stringify(body1); console.log('server logs',body); return this.http.post('http://localhost:4000/channels/mychannel/chaincodes/mycc', body, options ) .map((res: Response) => res.json()) .catch((error:any) => Observable.throw(error.json().error || 'Server error shit bang in')); } 

这是我的节点API代码

  app.post('/channels/:channelName/chaincodes/:chaincodeName', function(req, res) { logger.debug('==================== INVOKE ON CHAINCODE =================='); var peers = req.body.peers; var chaincodeName = req.params.chaincodeName; var channelName = req.params.channelName; var fcn = req.body.fcn; var args = req.body.args; logger.debug('channelName : ' + channelName); logger.debug('chaincodeName : ' + chaincodeName); logger.debug('fcn : ' + fcn); logger.debug('args : ' + args); if (!peers || peers.length == 0) { res.json(getErrorMessage('\'peers\'')); return; } if (!chaincodeName) { res.json(getErrorMessage('\'chaincodeName\'')); return; } if (!channelName) { res.json(getErrorMessage('\'channelName\'')); return; } if (!fcn) { res.json(getErrorMessage('\'fcn\'')); return; } if (!args) { res.json(getErrorMessage('\'args\'')); return; } invoke.invokeChaincode(peers, channelName, chaincodeName, fcn, args, req.username, req.orgname) .then(function(message) { res.send(message); }); }); 

当我尝试使用curl查询发布数据时,一切工作正常。 这是我用来发布请求的curl查询

 curl -s -X POST \ http://localhost:4000/channels/mychannel/chaincodes/mycc \ -H "authorization: Bearer $ORG1_TOKEN" \ -H "content-type: application/json" \ -d '{ "peers": ["localhost:7051", "localhost:8051"], "fcn":"initDegree", "args":["Khurrum","software","Ned11831314","3.5","Ned"] }' 

我在我的angular2服务中做错了什么?

在您的angular度服务代码,而不是创build您的请求正文作为URLSearchParams实例,试试这个:

 let body1 = { peers: ["localhost:10151","localhost:10351"], fcn: fcn, args: argument } let body = JSON.stringify(body1);