打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用nodejs消费SAP Cloud for Customer上的Web service

Jerry在公众号文章C4C和微信集成系列教程里曾经使用nodejs去消费C4C提供的标准webservice。

看一个具体例子:C4C里Individual Customers可以维护Social User Profile,在Jerry上面的公众号文章里,正是把微信用户的open ID维护到Social User Profile的SocialMediaAccountUserID字段去,如下图所示。

那么已知一个Social Profile ID,如何用nodejs通过Web Service的方式获得该Profile明细?

首先到Administrator->Input and Output Management->Service Explorer中取得标准的查询Social User profile的web service:

https://<host name>/sap/bc/srt/scs/sap/requestforsocialmediauserprofi

然后使用nodejs module request给这个url发一个HTTP post请求。

您可以参考我github上的源代码。

var request = require('request');var config = require("../../config.js");function getSocialMediaProfile(profileID) {  console.log("Jerry trace begin ***********************************");  console.log("url: " + config.socialMediaProfileGetEndPoint);  console.log("config.credential_qxl: " + config.credential_qxl);  var ogetSocialMediaProfileOptions = {        url: config.socialMediaProfileGetEndPoint,        method: "POST",        headers: {            "content-type": "text/xml",            'Authorization': 'Basic ' + new Buffer(config.credential_qxl).toString('base64')        },        body: '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:glob="http://sap.com/xi/SAPGlobal20/Global"><soapenv:Header/><soapenv:Body><glob:SocialMediaUserProfileRequest_sync>'                      +'<SocialMediaUserProfileSelectionByElements>'                      +'<SelectionBySocialMediaUserProfileID>'                      +'<InclusionExclusionCode>I</InclusionExclusionCode>'                      +'<IntervalBoundaryTypeCode>1</IntervalBoundaryTypeCode>'                      +'<LowerBoundarySocialMediaUserProfileID >' + profileID + '</LowerBoundarySocialMediaUserProfileID>'                      +'</SelectionBySocialMediaUserProfileID>'                      +'</SocialMediaUserProfileSelectionByElements>'                      +'</glob:SocialMediaUserProfileRequest_sync></soapenv:Body></soapenv:Envelope>'              };  console.log("body: " + ogetSocialMediaProfileOptions.body);  console.log("Jerry trace end ***********************************");  return new Promise(function(resolve,reject){      request(ogetSocialMediaProfileOptions,function(error,response,body){        console.log("Jerry web service response: " + body);        var soapreg = /.*<SocialMediaUserAccountID>(.*)<\/SocialMediaUserAccountID>.*/;          var soapresult = soapreg.exec(body);          if( soapresult.length === 2){              resolve(soapresult[1]);          }      });    }); }module.exports = getSocialMediaProfile;

将上述代码另存为文件getSocialMediaProfileTest.js, 直接使用node getSocialMediaProfileTest.js执行。

从console能观察到发送的HTTP post请求的body和返回的响应内容:

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Nodejs学习笔记(十一)
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
跟我学AngularJs:Service、Factory、Provider依赖注入使用与区别
WebService学习笔记1
nodejs结合node-fluent-ffmpeg 进行视频转换,获取视频缩略图
nodejs搭建web服务器就是这么简单!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服