点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
能帮我从我的应用程序中调用状态证明服务的实例吗?
我一直在关注本指南以构建服务。 它已经启动并正在运行,并且从SAP API Hub调用它没有任何问题。 这是我在下面保存了ID为" 3"的原始示例有效负载后的201响应:
{" test":" value"}
现在,如果我尝试生成JavaScript代码段,并在自己的应用程序中使用它直接调用该服务,则会收到500错误。 这是我使用的代码:
writeData:function(){ var data = JSON.stringify({ " test":"值" }); var xhr = new XMLHttpRequest(); xhr.withCredentials = false; xhr.open(" POST"," https://blockchain-service.cfapps.us10.hana.ondemand.com/blockchain/proofOfState/api/v1/states/4"); xhr.setRequestHeader(" Content-Type"," application/json"); xhr.setRequestHeader(" Accept"," application/json"); xhr.setRequestHeader(" Access-Control-Allow-Credentials"," true"); xhr.setRequestHeader(" Access-Control-Allow-Origin"," https://这是该服务的500条响应:-approuter.cfapps.us10.hana.ondemand.com"); xhr.setRequestHeader(" Access-Control-Allow-Headers","访问控制允许来源,授权,内容类型"); xhr.setRequestHeader(" Access-Control-Allow-Methods"," GET,HEAD,PUT,PATCH,POST,DELETE"); xhr.setRequestHeader(" Authorization"," Bearer "); xhr.onload = function(){ 如果(xhr.status === 200){ alert("已成功调用API!"); }其他{ alert("调用API失败"); } }; xhr.send(data); }
{"错误":{"代码":500,"消息":" {\" statusCode \":500}-请在 https://help上查看我们的文档。 sap.com/viewer/p/BLOCKCHAIN_APPLICATION_ENABLEMENT /"}}
请注意,这不是403或CORS错误。 我已经解决了。 呼叫确实到达了服务,我可以在仪表板中看到它,如下所示:
我不明白为什么是500? 最糟糕的是,该服务没有提供说明,并且该错误在任何地方都无法跟踪。 我怀疑我的有效负载不正确,但是文档中没有提供任何适合后期操作的有效负载示例。
因此,如果您能提出任何建议或提供示例说明,我将不胜感激 服务应该被调用。
谢谢!
-------------------------------------- ----------------
我已经查看了以下示例,但找不到答案:
https://developers.sap.com/tutorials/blockchain-application-enablement-proofstate.html
https://help.sap.com/viewer/71a0bb282b2144c6b27fefc772394cfb/BLOCK-AIN4
https://github.wdf.sap.corp/区块链/时间戳/blob/master/index.js
(141.5 kB)
安东,
我来自SAP区块链团队,并检查了您的问题。 看来该问题是由令牌交换引起的,该令牌交换以某种方式无法正常工作。
我在您的代码中看到,您传递了用户令牌来检索refresh_token,然后通过刷新令牌来检索服务的技术令牌(因此,技术令牌会随用户数据进行扩展)。 问题是所需的uaa.user范围似乎丢失了。 如果您使用该令牌调用区块链服务,它也想为结构服务进行令牌交换,但由于范围丢失而失败。 (这导致了500错误-我们将在此处改善消息和状态代码)。
目前,对您来说,最简单的选择是仅使用技术令牌而不进行令牌交换来调用服务。
这是一个代码示例:
最好
Christopher
嗨安东,
您能够解决此问题吗? 我没有HTTP 500错误的解释,但发现直接通过curl和其他前端客户端调用某些服务相当挑剔。 不知道有多少SAP对其他产品感兴趣,但是看起来他们在为您解决此问题。
thx,gm
您是否尝试过致电您的 通过邮递员使用API?
我建议您获取令牌,然后通过邮递员调用您的API。
好吧,我更喜欢AJAX调用,所以我只向您提供AJAX的代码段。
在下面的代码中,我们正在调用API并接收令牌; 然后再次使用该令牌和主体调用API。 下面提到的代码是在MTA UI5下的node.js中编写的。
嗨,格雷戈里,
不,我没有足够的时间让它无法正常运行。 克里斯托弗·弗里斯(Christopher Fries)的回答确实说明了正在发生的事情。 将来我很可能会再试一次。
谢谢,
安东
一个问题。 您是否正在区块链服务和UI5调用之间使用区块链启用服务? 呼叫流程必须类似于上面所述,其中区块链服务可以是多链,仲裁或超级账本。
嗨,克里斯托弗,
您的代码确实是我的临时解决方案,因为理想情况下,我希望看到一个在PoS中创建每个交易的用户。
有趣 我在生成的技术令牌中看到了范围" uaa.resource"。 但这是一个多带带的对话:)
非常感谢您的帮助!
干杯,
Anton
嘿,我也遇到了问题 状态证明API。 我试图从SAP API业务中心进行调用,但收到消息:"未经授权"。 我提供了所有OAuth2.0信息...是否需要进行一些其他配置才能调用api?
一周热门 更多>