点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
上下文:
我想使用API来获取Workflow-instance,并将状态从运行更改为完成,我这样做的方式是 API集线器。 但是我遇到了错误400,但是我的代码中找不到格式或结构错误。
代码:
function getWorkflowInstanceId(){ $ .ajax({ 类型:" GET", 网址:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/workflow-instances", 成功:function(data,statusText,xhr){ var instanceDetails =数据; var ID = instanceDetails [0] .id; $ .ajax({ 网址:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/xsrf-token", 方法:" GET", 标头:{ " Authorization":"基本<...>", " X-CSRF-Token":"获取" }, 成功:功能(结果,xhr,数据){ var令牌= data.getResponseHeader(" X-CSRF-令牌"); $ .ajax({ 网址:" https://bpmworkflowruntimewfs-p1943029284trial.hanatrial.ondemand.com/workflow-service/rest/v1/task-instances/" + ID, 方法:" PATCH", contentType:" application/json", 数据:" {\"状态\":\"完成\",\"上下文\":{\" userCreationApproved \":\"" +" true" +" \"}}", 标头:{ " X-CSRF-Token":令牌 }, 成功:function(){ alert("您的批准已提交!"); }, 错误:功能(错误){ alert(error.statusText); } }); }, }); }, 错误:function(errMsg){ alert("不起作用" + errMsg); }, contentType:" application/json" }); }
在调试器中,我可以毫无错误地获取X-CSRF-Token和ID(workflow-instanceId)。
错误消息:
我在请求内容中找不到结构错误的格式。
所以任何建议对我都会很有帮助。
最诚挚的问候,
Joy Lee
(84.5 kB)
嗨,
您的示例有点混乱,因为在您描述的文本中您要更改工作流实例状态。 但是,在代码中,您首先要阅读工作流实例,但要更新任务实例。
尽管如此,错误请求(400)响应源自您实际上正在传递数组的事实。 任务实例PATCH api仅期望一个简单对象。
最诚挚的问候,
Stefan Henke
我有点困惑,因为您向我们展示JavaScript的代码遇到了400错误,但是:
-还有Postman屏幕截图,您将在其中显示错误,那么您在哪个实际情况下会收到错误?
-您说要获取工作流实例,但实际上要对其进行修改,对吧?
-在JavaScript中,您要进行三个调用。 如果在这里经历过400,它将发生在哪个呼叫中?
嗨,
您传递给端点的结构看起来不错。 我认为可以通过内联" true"值来优化它。 但这没关系。
您可以检查以下内容吗?
1)任务真的还在吗? 如果您要更新已经完成的任务,还将以http 400错误进行响应,但响应中将显示不同的错误消息。
2)http响应应包含一个logId。 你能提供给我吗? 这将给我一些进一步研究的提示。
顺便说一句,请注意本文中授权标头的粘贴值。 其中可能包含不安全加密的敏感信息。
最好的问候,
Stefan
您好,Stefan,
您实际上明白了这一点。 是的,我弄错了。 我需要工作流实例ID来获取任务实例ID,然后使用任务实例PATCH API更改用户任务实例状态。 (最后我回到正确的方向,多么愚蠢的家伙)。
阅读您的评论后,我更改了密码。 如您所述,PATCH API仅期望一个简单的对象。 我没有传递数组,而不是传递数组的元素。
请在下面找到
获取任务ID:
调用补丁API:
修改后,我仍然遇到相同的问题,尽管我可以获得任务ID,但无法在jQuery.ajax中使用它来调用PATCH API。 然后我在Postman中尝试了一下,但仍然收到关于结构错误的错误400。
在第二个函数中," getTaskInstanceId()"是一个回调函数,但始终在jQuery.ajax运行结束后调用,因此我无法将taskId传递给jQuery.ajax。
如果您有任何建议,请随时回复我。
最诚挚的问候,
Joy Lee
嗨Stefan,
感谢您的帮助,我解决了问题。
1)调用PATCH API时,不能使用方法:" PATCH" 。
当我将属性"方法"更改为"类型"时,所有问题都已解决。
2)格式异常
对于邮递员中的数据,由于使用[]来包含我的数据,因此出现了错误400。
如果可以帮助您,我想给您日志ID:
顺便说一句,您能告诉我这些日志ID是什么意思吗? 是否有日志库或其他任何东西?
再次感谢您对敏感信息的建议,我将找到另一种获取令牌的方法:)
最诚挚的问候,
Joy Lee
一周热门 更多>